{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.stats import norm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Kalman Filter Implementation for Constant Velocity Model (CV) in Python"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Image](http://www.cbcity.de/wp-content/uploads/2013/06/Fahrzeug_GPS_Tunnel-520x181.jpg)\n",
    "\n",
    "Situation covered: You drive with your car in a tunnel and the GPS signal is lost. Now the car has to determine, where it is in the tunnel. The only information it has, is the velocity in driving direction. The x and y component of the velocity ($\\dot x$ and $\\dot y$) can be calculated from the absolute velocity (revolutions of the wheels) and the heading of the vehicle (yaw rate sensor)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Kalman Filter](Kalman-Filter-Step.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## State Vector"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Constant Velocity Model for Ego Motion\n",
    "\n",
    "$$x_k= \\left[ \\matrix{ x \\\\ y \\\\ \\dot x \\\\ \\dot y} \\right] = \\matrix{ \\text{Position X} \\\\ \\text{Position Y} \\\\ \\text{Velocity in X} \\\\ \\text{Velocity in Y}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Formal Definition (Motion of Law):\n",
    "\n",
    "$$x_{k+1} = \\textbf{A} \\cdot x_{k}$$\n",
    "\n",
    "$$x_{k+1} = \\begin{bmatrix}1 & 0 & \\Delta t & 0 \\\\ 0 & 1 & 0 & \\Delta t \\\\ 0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1 \\end{bmatrix} \\cdot \\begin{bmatrix} x \\\\ y \\\\ \\dot x \\\\ \\dot y \\end{bmatrix}_{k}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Observation Model:\n",
    "\n",
    "$$y = \\textbf{H} \\cdot x$$\n",
    "\n",
    "$$y = \\begin{bmatrix}0 & 0 & 1 & 0 \\\\ 0 & 0 & 0 & 1\\end{bmatrix} \\cdot x$$ means: You observe the velocity directly in the correct unit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initial State $x_0$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(matrix([[ 0.],\n",
      "        [ 0.],\n",
      "        [ 0.],\n",
      "        [ 0.]]), (4, 1))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x106c97190>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/paul/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
      "  if self._edgecolors == str('face'):\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nXkMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106b13c10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.matrix([[0.0, 0.0, 0.0, 0.0]]).T\n",
    "print(x, x.shape)\n",
    "plt.scatter(float(x[0]),float(x[1]), s=100)\n",
    "plt.title('Initial Location')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Initial Uncertainty $P_0$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(array([[ 1000.,     0.,     0.,     0.],\n",
      "       [    0.,  1000.,     0.,     0.],\n",
      "       [    0.,     0.,  1000.,     0.],\n",
      "       [    0.,     0.,     0.,  1000.]]), (4, 4))\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106d82850>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "P = np.diag([1000.0, 1000.0, 1000.0, 1000.0])\n",
    "print(P, P.shape)\n",
    "\n",
    "fig = plt.figure(figsize=(6, 6))\n",
    "im = plt.imshow(P, interpolation=\"none\", cmap=plt.get_cmap('binary'))\n",
    "plt.title('Initial Covariance Matrix $P$')\n",
    "ylocs, ylabels = plt.yticks()\n",
    "# set the locations of the yticks\n",
    "plt.yticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.yticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "xlocs, xlabels = plt.xticks()\n",
    "# set the locations of the yticks\n",
    "plt.xticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.xticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "plt.xlim([-0.5,3.5])\n",
    "plt.ylim([3.5, -0.5])\n",
    "\n",
    "from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
    "divider = make_axes_locatable(plt.gca())\n",
    "cax = divider.append_axes(\"right\", \"5%\", pad=\"3%\")\n",
    "plt.colorbar(im, cax=cax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dynamic Matrix $A$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is calculated from the dynamics of the Egomotion.\n",
    "\n",
    "$$x_{k+1} = x_{k} + \\dot x_{k} \\cdot \\Delta t$$\n",
    "$$y_{k+1} = y_{k} + \\dot y_{k} \\cdot \\Delta t$$\n",
    "$$\\dot x_{k+1} = \\dot x_{k}$$\n",
    "$$\\dot y_{k+1} = \\dot y_{k}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(matrix([[ 1. ,  0. ,  0.1,  0. ],\n",
      "        [ 0. ,  1. ,  0. ,  0.1],\n",
      "        [ 0. ,  0. ,  1. ,  0. ],\n",
      "        [ 0. ,  0. ,  0. ,  1. ]]), (4, 4))\n"
     ]
    }
   ],
   "source": [
    "dt = 0.1 # Time Step between Filter Steps\n",
    "\n",
    "A = np.matrix([[1.0, 0.0, dt, 0.0],\n",
    "              [0.0, 1.0, 0.0, dt],\n",
    "              [0.0, 0.0, 1.0, 0.0],\n",
    "              [0.0, 0.0, 0.0, 1.0]])\n",
    "print(A, A.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Measurement Matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We directly measure the Velocity $\\dot x$ and $\\dot y$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(matrix([[ 0.,  0.,  1.,  0.],\n",
      "        [ 0.,  0.,  0.,  1.]]), (2, 4))\n"
     ]
    }
   ],
   "source": [
    "H = np.matrix([[0.0, 0.0, 1.0, 0.0],\n",
    "              [0.0, 0.0, 0.0, 1.0]])\n",
    "print(H, H.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Measurement Noise Covariance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(matrix([[ 100.,    0.],\n",
      "        [   0.,  100.]]), (2, 2))\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nxOTSOedMZdKkRj6lSIq6XJo3D66+GiC3XMrUxFcF9DWz3mbWBn/GNbveNrOBMwHMbASw2Tm3Id2+\nZpY6B/I4YGW0vp2ZtY+WRwM1zrnUlstT8UlY//hnRcsnA49k+EwiWRs4MPM2WUpMLqmpXHJVkCY+\n59xWM5sEzMP3JJrunFtpZj+MXr/BOTfHzMaY2VrgE+DsdPtGb32Vme2Hv6D7GnB+tL4bMNfMavFn\niGfUC+kU4Lh666YDt5rZGuA9fLu6SF4MHAj33df890lSLh18cJO+AiljXbvCjjv6u5nnwpzLtmm8\ntJmZK5fPKvkzezaMG2c453K+NpREyiNpqm99Cx58MLdcUoESSWPLFthxRxWoOsojaaqNG6FbNxWo\nBimxpKnMVKDqKI+kOXLNpbKai09EREqHCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSI\niMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSS\nCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSI\niMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSSCpSIiMSS\nCpSIiMSSCpSIiMRSxgJlZsea2SozW2NmkxvZ5tro9WozG5hpXzO7Itp2qZnNM7Pu0fo2ZjbDzJab\n2TIzOzxlnzZm9n9m9pKZrTSzE6L1E81sU/ReS83s+835QoqlsrIydAj/EqdYIH7x5ItyKf/i9rei\nePIrbYEys5bAH4Fjgf7AqWbWr942Y4B9nHN9gfOA67LY91fOuYOdcwOBB4BLo/U/AGqdcwcBo4Hf\npBxqCrDeObefc64f8Hi03gF3OucGRo+bcv4WAojTH06cYoH4xZMPyqXCiNvfiuLJr0y/oIYBa51z\nrznnaoCZwLh624wFbgZwzj0FdDKz3dLt65z7KGX/DkBttNwPWBhtswnYbGZDotfOBq6q28k59160\naNFDJM6USyI5ylSg9gDeSHn+ZrQum212T7evmV1pZuuA09h+1lcNjDWzlmbWBxgM9DSzTtHr/21m\nz5rZ3WbWNVrngJOipoxZZtYjw2cSCUG5JJIr51yjD+Ak4M8pz08H/lBvm/uBw1KeL8AnQ8Z9o/UX\nAVOj5ZbAb4GlwL3Ag/izyl3xZ4YnRtv9P+CWaHkXoHW0fB7wSCOfxemhR1Mf6fIkmwcJyaXQ/w56\nlP4jl7xpRXpvAT1TnvfEn72l26ZHtE3rLPYFuAOfPFOdc9uAn9a9YGaLgNXAe8Cnzrm/RS/9FTgH\n/2n/mfJe04FfNfRBnHNqupCQEpFLyiMppkxNfFVAXzPrbWZtgPHA7HrbzAbOBDCzEcBm59yGdPua\nWd+U/ccBK6P17cysfbQ8Gqhxzq1y/tTtfjM7ItpnFPBCtF33lPcaC7yY9acXKR7lkkiO0v6Ccs5t\nNbNJwDx8k8F059xKM/th9PoNzrk5ZjbGzNYCn+AvwDa6b/TWV5nZfvimhteA86P13YC5ZlaLP0M8\nIyWcycCtZvZ7YGPdcYALzWwssBV/djixaV+FSOEol0RyZ1G7soiISKwkeiYJMzvFzF4ws21mNqje\naxdHgx5XmdnRAWKbamZvpgyKPLbYMURxZBw8WuR4Xot6kS01s6cDHP8mM9tgZs+nrNvFzOab2Woz\nezilJ1zZUC5lFYdyafux85JHiS5QwPPACWwfiAiAmfXHt+P3xw9+nGZmxf4uHPDblEGRc4t8/KwG\njwbggIroOxkW4Pgz8N9HqouA+c65fYFHouflRrmUhnLpK/KSR4kuUNFF4dUNvDQOP2K+xjn3GrAW\nPxiy2EL3iMpm8GgIwb4X59w/gPfrrf7XANrov98palAxoFzKSLmUIl95lOgClcbufLmbbkODJovh\nQvPzqE0P1GyUzeDRYnPAAjOrMrMfBI6lTreoNx3ABnwHBPGUS55yKbOc8yjTOKjYM7P5wG4NvHSJ\nc+7+HN4q771F0sQ2BT/P2i+i51fg50o7J98xZBDHHjKHOefeMbMuwHwzWxWdjcWCc86ZWRy/t2ZT\nLjVLHP8mYptL2eZRyRco59zoJuzW0IDIt/IT0XbZxmZmN+JnESi2bAaPFpVz7p3ov5vM7O/4ppPQ\nSbXBzHZzzq2PxgptDBxPQSiXmkW5lFnOeVROTXypbbGzgQnmbzvQB+gLFLuXS+qgyBPwF6GLLZvB\no0VjZjua2U7RcnvgaMJ8L/XNBs6Kls/CTx1UzpRLX6Vcyiz3PGruHGNxfuD/WN8AtgDrgYdSXrsE\nf0F3FXBMgNhuAZbjJ/W8F98+G+I7Og54KfouLg7879UHWBY9VoSIB7gTeBv4IvrbORs/R90C/FRB\nDwOdQn5Pgf5tlEuZ41AubT9+XvJIA3VFRCSWyqmJT0RESogKlIiIxJIKlIiIxJIKlIiIxJIKlIiI\nxJIKlIiIxJIKlIiIxNL/B4beHyQksiTAAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x106d75f90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ra = 10.0**2\n",
    "\n",
    "R = np.matrix([[ra, 0.0],\n",
    "              [0.0, ra]])\n",
    "print(R, R.shape)\n",
    "\n",
    "# Plot between -10 and 10 with .001 steps.\n",
    "xpdf = np.arange(-10, 10, 0.001)\n",
    "plt.subplot(121)\n",
    "plt.plot(xpdf, norm.pdf(xpdf,0,R[0,0]))\n",
    "plt.title('$\\dot x$')\n",
    "\n",
    "plt.subplot(122)\n",
    "plt.plot(xpdf, norm.pdf(xpdf,0,R[1,1]))\n",
    "plt.title('$\\dot y$')\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Process Noise Covariance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The Position of the car can be influenced by a force (e.g. wind), which leads to an acceleration disturbance (noise). This process noise has to be modeled with the process noise covariance matrix Q.\n",
    "\n",
    "$$Q = \\begin{bmatrix}\\sigma_{x}^2 & \\sigma_{xy} & \\sigma_{x \\dot x} & \\sigma_{x \\dot y} \\\\ \\sigma_{yx} & \\sigma_{y}^2 & \\sigma_{y \\dot x} & \\sigma_{y \\dot y} \\\\ \\sigma_{\\dot x x} & \\sigma_{\\dot x y} & \\sigma_{\\dot x}^2 & \\sigma_{\\dot x \\dot y} \\\\ \\sigma_{\\dot y x} & \\sigma_{\\dot y y} & \\sigma_{\\dot y \\dot x} & \\sigma_{\\dot y}^2 \\end{bmatrix}$$\n",
    "\n",
    "One can calculate Q as\n",
    "\n",
    "$$Q = G\\cdot G^T \\cdot \\sigma_v^2$$\n",
    "\n",
    "with $G = \\begin{bmatrix}0.5dt^2 & 0.5dt^2 & dt & dt\\end{bmatrix}^T$ and $\\sigma_v$ as the acceleration process noise, which can be assumed for a vehicle to be $8.8m/s^2$, according to: Schubert, R., Adam, C., Obst, M., Mattern, N., Leonhardt, V., & Wanielik, G. (2011). [Empirical evaluation of vehicular models for ego motion estimation](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=5940526). 2011 IEEE Intelligent Vehicles Symposium (IV), 534–539. doi:10.1109/IVS.2011.5940526"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "sv = 8.8\n",
    "\n",
    "G = np.matrix([[0.5*dt**2],\n",
    "               [0.5*dt**2],\n",
    "               [dt],\n",
    "               [dt]])\n",
    "\n",
    "Q = G*G.T*sv**2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$$\\left[\\begin{matrix}0.25 dt^{4} & 0.25 dt^{4} & 0.5 dt^{3} & 0.5 dt^{3}\\\\0.25 dt^{4} & 0.25 dt^{4} & 0.5 dt^{3} & 0.5 dt^{3}\\\\0.5 dt^{3} & 0.5 dt^{3} & dt^{2} & dt^{2}\\\\0.5 dt^{3} & 0.5 dt^{3} & dt^{2} & dt^{2}\\end{matrix}\\right]$$"
      ],
      "text/plain": [
       "⎡       4         4        3        3⎤\n",
       "⎢0.25⋅dt   0.25⋅dt   0.5⋅dt   0.5⋅dt ⎥\n",
       "⎢                                    ⎥\n",
       "⎢       4         4        3        3⎥\n",
       "⎢0.25⋅dt   0.25⋅dt   0.5⋅dt   0.5⋅dt ⎥\n",
       "⎢                                    ⎥\n",
       "⎢      3         3       2        2  ⎥\n",
       "⎢0.5⋅dt    0.5⋅dt      dt       dt   ⎥\n",
       "⎢                                    ⎥\n",
       "⎢      3         3       2        2  ⎥\n",
       "⎣0.5⋅dt    0.5⋅dt      dt       dt   ⎦"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sympy import Symbol, Matrix\n",
    "from sympy.interactive import printing\n",
    "printing.init_printing()\n",
    "dts = Symbol('dt')\n",
    "Qs = Matrix([[0.5*dts**2],[0.5*dts**2],[dts],[dts]])\n",
    "Qs*Qs.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nmJlZzv8HR6YfJXEWtfkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1084f1f10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(6, 6))\n",
    "im = plt.imshow(Q, interpolation=\"none\", cmap=plt.get_cmap('binary'))\n",
    "plt.title('Process Noise Covariance Matrix $P$')\n",
    "ylocs, ylabels = plt.yticks()\n",
    "# set the locations of the yticks\n",
    "plt.yticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.yticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "xlocs, xlabels = plt.xticks()\n",
    "# set the locations of the yticks\n",
    "plt.xticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.xticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "plt.xlim([-0.5,3.5])\n",
    "plt.ylim([3.5, -0.5])\n",
    "\n",
    "from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
    "divider = make_axes_locatable(plt.gca())\n",
    "cax = divider.append_axes(\"right\", \"5%\", pad=\"3%\")\n",
    "plt.colorbar(im, cax=cax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Identity Matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(array([[ 1.,  0.,  0.,  0.],\n",
      "       [ 0.,  1.,  0.,  0.],\n",
      "       [ 0.,  0.,  1.,  0.],\n",
      "       [ 0.,  0.,  0.,  1.]]), (4, 4))\n"
     ]
    }
   ],
   "source": [
    "I = np.eye(4)\n",
    "print(I, I.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Measurement"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2, 200)\n",
      "Standard Deviation of Acceleration Measurements=1.12\n",
      "You assumed 100.00 in R.\n"
     ]
    }
   ],
   "source": [
    "m = 200 # Measurements\n",
    "vx= 20 # in X\n",
    "vy= 10 # in Y\n",
    "\n",
    "mx = np.array(vx+np.random.randn(m))\n",
    "my = np.array(vy+np.random.randn(m))\n",
    "\n",
    "measurements = np.vstack((mx,my))\n",
    "\n",
    "print(measurements.shape)\n",
    "\n",
    "print('Standard Deviation of Acceleration Measurements=%.2f' % np.std(mx))\n",
    "print('You assumed %.2f in R.' % R[0,0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1087c3cd0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n6bg554E+HAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1084f1b10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,5))\n",
    "\n",
    "plt.step(range(m),mx, label='$\\dot x$')\n",
    "plt.step(range(m),my, label='$\\dot y$')\n",
    "plt.ylabel('Velocity')\n",
    "plt.title('Measurements')\n",
    "plt.legend(loc='best',prop={'size':18})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Preallocation for Plotting\n",
    "xt = []\n",
    "yt = []\n",
    "dxt= []\n",
    "dyt= []\n",
    "Zx = []\n",
    "Zy = []\n",
    "Px = []\n",
    "Py = []\n",
    "Pdx= []\n",
    "Pdy= []\n",
    "Rdx= []\n",
    "Rdy= []\n",
    "Kx = []\n",
    "Ky = []\n",
    "Kdx= []\n",
    "Kdy= []"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Kalman Filter"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![Kalman Filter](Kalman-Filter-Step.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "for n in range(len(measurements[0])):\n",
    " \n",
    "    # Time Update (Prediction)\n",
    "    # ========================\n",
    "    # Project the state ahead\n",
    "    x = A*x\n",
    "    \n",
    "    # Project the error covariance ahead\n",
    "    P = A*P*A.T + Q\n",
    "    \n",
    "    \n",
    "    # Measurement Update (Correction)\n",
    "    # ===============================\n",
    "    # Compute the Kalman Gain\n",
    "    S = H*P*H.T + R\n",
    "    K = (P*H.T) * np.linalg.pinv(S)\n",
    "\n",
    "    \n",
    "    # Update the estimate via z\n",
    "    Z = measurements[:,n].reshape(2,1)\n",
    "    y = Z - (H*x)                            # Innovation or Residual\n",
    "    x = x + (K*y)\n",
    "    \n",
    "    # Update the error covariance\n",
    "    P = (I - (K*H))*P\n",
    "\n",
    "\n",
    "    \n",
    "    \n",
    "    # Save states for Plotting\n",
    "    xt.append(float(x[0]))\n",
    "    yt.append(float(x[1]))\n",
    "    dxt.append(float(x[2]))\n",
    "    dyt.append(float(x[3]))\n",
    "    Zx.append(float(Z[0]))\n",
    "    Zy.append(float(Z[1]))\n",
    "    Px.append(float(P[0,0]))\n",
    "    Py.append(float(P[1,1]))\n",
    "    Pdx.append(float(P[2,2]))\n",
    "    Pdy.append(float(P[3,3]))\n",
    "    Rdx.append(float(R[0,0]))\n",
    "    Rdy.append(float(R[1,1]))\n",
    "    Kx.append(float(K[0,0]))\n",
    "    Ky.append(float(K[1,0]))\n",
    "    Kdx.append(float(K[2,0]))\n",
    "    Kdy.append(float(K[3,0]))    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Thats it."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Let's take a look at the filter performance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Kalman Gains K"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x108c6efd0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA64AAAIwCAYAAACGHTb1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xt4VFWWNvB3VSDFJUBMEEggJAYC6KcCGmVMUANBwUHl\nGhoCAklLGpDLmEZGEIVuZz5HO7bMtKJ8yDSk9aExKKB4Z9JAS5BJJnJTQWQAEeiYAEm4pc1lfX+c\nU2UlVZWkKkVywPf3PPVIncvea+9KHWvV3meXqCqIiIiIiIiIrMrW0gEQERERERER1YeJKxERERER\nEVkaE1ciIiIiIiKyNCauREREREREZGlMXImIiIiIiMjSmLgSERERERGRpTFxJaImE5FjIpLc0nEE\ngoicF5GYJpy/U0T617N/m4j80t/y65R11fW7iKwRkWdbOo7mICI1IhLb0nFQw0QkUUQOm+//hxs4\nNsZ8bW3m81rvaRH5FxEpFpFTIhJllil1jxWR6SLyVx9i9On4liQiy0TkT+a/e7r2gY/lLBKRVQGI\n51YR2dnUcoioZTFxJSIA7kmQiEwUkbMicncjTlfz0eJE5D4R+YuIlItIiYh8ISILRcTemPNVtYOq\nHvOz7ocAlKnqXvO588ObaxUIXF9Zpt898fJB29Ix+yuQX0hQYDXyy5LfAvgP8/3/ro9VOP+mRaQn\ngEwA/VQ1UlVPmGVq3WMbiLlWcnwVcrZRVb+r0wceiUiSiJyoVYjqc6o6o8nBqO4DUCoiDza1LCJq\nOVfrBZGIAs/1w9c0AC8D+EdVvSq+4QcAEUkBkAPgDQA9VbUzgF8A6AEgqhlCmAmgbqJ6TRKRVi0d\nw5UiJh9Pu+aS8aYQkaCWjsFHPQF8FaByzqjqmQCUBQA+j1IG2jX0Xn8TwK9aOggi8h8TVyJyJSLy\nKwBZAO5X1c/Njb1EJNccwSwWkTdEpJOXApaJSI6I/Mkc9dwnInHmlK8iEflORO5zOT5NRL4yjz0i\nIhku+5JE5HsRyTTPPSUi070FDuD3AH6jqqtVtRQAVPUbVZ2nqt+ax90pIrtE5JxZ3h9EpLVLOc7p\nneZIzSsissWM73NvUz9FJBjAEADbzecjACwC8AtzmtwXLofHiMhnZpkfi0i4Szn/ICJ5Znx7RORe\nby9WnfrtIrJcRE6aj5fMmCAi20VkrPnvRLON/2g+T3aNTUTSzdfjrIh8ZI4gufbNbBE5DOBQA/Hc\nCOBVAHeZ7T/rsjvMW5+KSD8R+VREzojIQfPLCG91bBORZ8WYnn1eRN4VkXAReVNEykTkv0Uk2uX4\nBBHJF5FSc99ddcr6FzGmE14EcENjYxGRfwVwN4CXzTj+w2X3fSLyjfl6vlznPK99Xec4x+jbdPP9\nc1ZEfiUid5jvr3Mi8ofGli0i/26WUyYiBSIy2GXfnea2MhH5m4i8aG53Gw0TY5bGUPPfy0Rkgxjv\n+zIA00Skk4isFuN99r35Wjmm1043X7ffm/EfEZG7XNpYJCJTXeqyi0iWiBw343pVRNq4xObxOiHG\n9SQVwELztdnsoX+PAIgF8J75Nxks7jNQPM2eqFtOMoBPAESadf2n+D9yusP8b6kZ0z/gpy8Wf2e+\nrv8rxnXGUb/X/vYQq+P1+rNZ/v+IyK0u+4+JMVNlH4DzImKTeq5NInKDGNeZchH5BEBnl311p1aH\nicgfxbhOnRWRd0SkHYAPXfquXEQi6va7iDwsIl+aMfxFRPrVifnXIrJXjPf4n6X2TJvtAJLF5XpP\nRFcZVeWDDz74AICjAN4G8DcAt9TZ1wtAMoDWMD6QbAfwUp1zh5r/XgbgMoD7AAQBWAvgf2EkcUEA\nHgXwvy7n/iOAG8x/3wMjaRhoPk8CUGmWGQTgAXN/Jw/x9wNQA2Oktb523gbgThhf3EXDGGWZ77K/\nBkCs+e81AEoAxJv1vwFgnZdy/w+AC3W2LQWQXWfbNgDfAugNoA2AvwB4ztzX3axvhPl8mPm8cz2v\nmaPffwsgz3x9OgPYCeC35r7fwJgGCQCLzfr/zeW8l8x/jwJwGEBfs3+eArCzTt98DCAUgL0Rf1PT\nAPy1zjavfQqgPYAT5nk2AAMAFAO40Uv52wB8A+AGAB0BfAkjoR7q8rf3n+axYQDOAZhslj0RwFkA\n17mUdQzAjeb+Tj7G8hcA6XW21QB414wtCsAPAIY3pq/rlBNjlrUCQDCM91YFgHfM1zoSQBGAexr5\nOk4GcJ25LxPAaQDB5r5dACab/24H4E6X9+KJev7+lgH4EcDD5vM2ADbC+PKiLYDrAewGkGHunw7j\nvT0NxqjiswC+A/AHGNeZ+wCUA2hnHv8SgE0w/vZCzH79v425TgD4I8z3QgPXv6H1PF8K4E91Xg9b\n3dcewL2u/dTAsdNR5/3hcl6063kux/8I4Jdmn80EcNJlv9f+9lC+4/Uaa/bZr2Fcp4PM/ccAFMK4\nJtnh/doU7vJ3k2W+dnebr122lz54H8A6GO+xVgDu9tR3Hvq9D4ALMP5fFATgCRh/561cXrPPAXSD\n8ff9FYBf1SmvDMDNDV27+OCDD2s+OOJKRA4C48PILgAHXHeo6hFV/S9VrVTVEhgfIusbCdyhqp+q\najWADTA+RP2b+Xw9jBHHjmbZH6jqUfPfO2CMWLjeV1sJ40Nntap+COODS18PdTq+4f+bs0HGN+7n\nROSiiEwx6yhU1f9W1RpVPQ7g/9XTFgXwjqoWmLG/CSOB8SQUwPk62wTuU/0URjL1rapWAHjLpcwp\nAD5Q1Y/MWLcCKICR3DckFUY/lZiv0W8APGLu2+HSxrsBPOfy/F6Yo8QwPgg/p6qHVLXGPG6AiLhO\ns35OVUtV9e+NiMnTNMf6+vRBAEdVda35+uyBkZx5G3VVAH9U1aOqWg5jxOZbVc01y84BMNA8diSA\nQ6r6pln2nwEcBPCwS1lrVPVrs+0jfIzFW3v/TVXLVfUEjKTFsXBXY/q6rmdV9UdV/RTG+2Cd+Xqf\nAvBX/NSP9ZZt9sE5s12/h5GYON5TPwKIE5HOqnpJVf+7nnjqytOf7g/tBCOBfFxVL6tqMYDlML4w\ncHD0r8J4H/SA8TdcabbxRwC9RUQAzACQaf7tXTDb5FpWQ9eJpk65bez5gZra662c42rMKFEA2QAi\nRKSLiHRFw/1dV4GqvmO+V34P48uGfzD3KYwvu06a73Vv16aRYozmxwN42nzt/grgPU9tEJEIGO+t\nmapapqpV+tPtKJ7a7LrtFwC2mP8vqoaRKLcFkOByzH+o6t9U9ZwZQ93r9XkY12oiugoxcSUiB4Xx\ngbcvgNddd4hIVzMJ/N6cBvgnAOEeynD4weXflwGUmB+0HM8BY9QEIvKAGNNFz4jIORhJmmvZZ8wP\n3w6XHOfW4binLMLZINWJqnodjJEDxzS1PmJMUz1ttuVfG2hLUZ22eKobMEbzOtRTjqu/ufzbtcxo\nAClmsn3O7I9EGCMIDYkEcNzl+XfmNsD4MqKPiHSB8UEuG0CUGFOU78BP0xKjAfy7S92OPu3uUm6t\n6aJ+8tan0QAG1Wl/KoCujSyrArX/9ipcyo6E0SeujuOnPgJqt82fWDzd5+r6Wrv+7Tamr+uq22/1\n9aPXskVkgRjTiEvN/Z3w0xc/v4QxsvW1GNOpR9YTT13fu/w7Gsbo22mXOF6D8SWWt/bATLjqtul6\nGKO//+NS1ocuMQONv05c7Zx/T6p6yfxnCBrX33U5Xy/z+vw96n8/eLs2RQI4p6qXXY53vRa5igJw\nVlXL6onLm1rvYTPmE6j9nvF2bXXoAKDUj7qJyAKulRvuiSgwimBMw9ouIitUdba5/f8CqIYxxapU\nREbDmNLXJOb9R2/D+DZ/s6pWi8hG+DdqcQjASQDjYIweePMqgP8B8AtVvSgi/2Se01TfwrjVNkJV\nT5vbauo7wYPvYEyLy2jwSHenYEzJ+9p83tPcBlW9JCL/A+CfAOxX1UoRyYMxPfBbVXXcf/odjFG9\ndfXU48siRL4uWPQdgO2qer+P5zWmvpMwpkW6ioaRAHk639dY/GlrQ33tL69li7FK+BMwpsF+aW47\nC/M9p8a94Knm9nEANohIGIypt+1cygmCe1Lk2gcnAPwdxlRSX98HdZXASEJucnlv+cLX1wYw2tve\n5XljvjwKJF9j9qe/naP75v2nPWBeMzzE4PXaJMZ95NeJSDuXZDoaxv8zPMUZJiKdPCSvDbX5JIBb\nXOoVsw0nvRxfqzwR6Q5jqn299+cTkXVxxJWIajE/GCYDGCEijgQwBMYHuXLzf/5PBKi6YPNRAqBG\nRB4A4FfSYn5Y+zWApSLyqIhcJ4Y41B4lC4ExXeySubDHrHqKbXQCrao/AtgK4347hyIY06LrluOt\n3DcAPCQi94tIkIi0EWPhmfpG4RzWAVgiIp1FpDOAZ1B7hePtAB7DT9OCtwGY4/IcMEZoFovITYBz\nsZf6psY6FjVa6mX33wD0qLMYSn19+j6MkeEpItLafNzhugCLpxAaWfaHZtmTRKSViPwCxn3RW7yc\nv8XHWIpg3AteH9ep4z73dSM0puwOAKoAlIixCNEzMO7BhXnsFBFxJKRlMD7818C4l7iNiPyj+Xou\ngTHF2CPzOvIJgN+LSAcxFvfpJSL3+Noo8729CsByR2wi0l1EGnutKIKx+JIv9gCYaP6txMP4csuf\nBNhfxTD6vaG/KQB+9/ftIjJGjFWD/wnGDIXPvRzr9dpk3nJRAOA35vtkMIxp/97i/BDAChEJNY93\nxFgEIFzM20g8yIExNXmo+Tf4azPmPC/H170e3Avgv1S10svxRGRxTFyJyI15P95QAOPFWDH1NzAW\nNSqDcd/Q2/D+IU497PP4XFXPA5gH4/62swAmAai76mejPyyq6lsAJsAYwf0Oxoe/9QBWwrjXFgAW\nwBhRKodxf+uf69RR998NtcXVSvx0XylgfNACgDMiUtBQHar6PYyFdRbDmPL6HYwPZ425Vv8LjA+P\n+8xHgbnNYTuMpN0xLXgHjBElx3Oo6iYAzwP4sxjTqPcDGO4lboceAD7zElMujAWT/iYijim8XvvU\n/Hu4H8Z9eSdhLBr0HIwvN7xp1Oulxs+TPAijP0tg/B086DLaXKss8z5KX2L5dxjvl7MisryeWB3x\nNNTX9bWz3mMaKPsj8/ENjAV4LqP2FOrhAA6IyHkY97JPVNW/m6Njs2HcRvA9jHtIXaeSeur7qTD6\n6ysY7+8c/DRy6et7659hzGr43GzTpzCmNDfm3NUAbjKnuL5Tz3GunoaRNJ6DsZDRmz7E2th2eeoD\nY4cxcvmvAHaaf1ODvBzv+ry+/vZU92YY942ehbFg11jz3lFP8TR0bUoFMMgs6xkYC6N5i/MRGPck\nH4SRrM4z6zgI4wu4/zXbHIHa75lDMK7tf4BxbR8J4CFVraqnja71TobxpQ4RXaXkp9vO/DhZ5D9h\nXDh+UNVbvBzzHzAWDLgEYLqqfuHpOCKia4GIfAbgMVXd29KxXGki0gPAn1V1cIMHE5FlmLMkeqvq\nIw0efA0Q46d+XlXVxJaOhYj819QR1z/CWB3OIzF+J7C3qsYByIBxbxkR0TVLVQf/HJJWwBiFYdJK\ndFUK1OrHVwVV3ceklejq16TE1VzC/Fw9hzwMc7qIqu4GECrGku1ERERE1DK8TlMmIrKqK72qcHfU\nvgfmexj3QxV5PpyIiIiIriRV/U1Lx0BE5KvmWJyp7nQUfsNHREREREREjXalR1xPwuV3wmCMtrr9\n3paIMJklIiIiIiK6hqmq3/fYX+nE9V0YvxP4ZxH5BwClqupxmnBTVjcmIv8tW7YMy5Yta+kwiH52\n+N4jahl87xG1DPeftfdNkxJXEVkH4wedO4vICQBLAbQGAFVdqaofmD9W/i2AiwDSmhQtERERERER\n/ew0KXFV1UmNOGZOU+ogIiIiIiKin7fmWJyJiCwsKSmppUMg+lnie4+oZfC9R3R1EivcWyoiaoU4\niIiIiIiIKPBEpEmLM3HElYiIiIiIiCyNiSsRERERERFZGhNXIiIiIiIisjQmrkRERERERGRpTFyJ\niIiIiIjI0pr0O65EREREdPUQ8XtBTyIij5rr12GYuBIRERH9jPAnCIkoUJrzyzBOFSYiIiIiIiJL\nY+JKRERERERElsbElYiIiIiIiCyNiSsRERERERFZGhNXIiIiIiIisjQmrkRERERERGRpTFyJiIiI\niIjI0pi4EhERERGZYmJiYLPZsH37do/79+/fj4iICNhsNkyYMAGVlZVNruu7777zu4yr3SeffIK0\ntDT07dsXnTp1gt1uR5cuXZCYmIiFCxciPz8/oPU1d59v3rwZiYmJ6NixI2w2G2w2G/bt29csdV9r\nWrV0AEREREREViIiEBG37bt378YDDzyA0tJSpKenY9WqVR6P87Wun6OioiJMnDjR+QVB7969MXTo\nUISEhODMmTMoLCzErl27kJWVhSlTpiA7Ozsg9Xp7ba+EL774AuPHj4eIIDk5GREREQCAsLCwZqn/\nWsPElYiIiIjIhaq6bcvNzcWoUaNw6dIlPP7443jxxRdbILJrw9mzZ5GQkICjR49i8ODBePnll3Hr\nrbe6HZeXl4fnn38eBw8eDFjdubm5qKysRGRkZMDK9GbTpk2orq7GU089hWefffaK13etY+JKRERE\nRFSPd9991zkteOnSpXjmmWdaOqSr2uzZs51Ja25uLlq18pySJCQkYPPmzSgoKAhY3TfccEPAymrI\niRMnABijydR0vMeViIiIiMiLN998E+PGjUNVVRWWL1/uNWndvXs3nnjiCcTHx6Nr164IDg5GZGQk\nUlJSsHv3bp/rddwPCQBr1qxBfHw82rdvj27duuHRRx9FSUkJAKCiogJLly5Fnz590KZNG0RHR2PJ\nkiWoqqoKSIyucaxfvx533XUXQkJC0KFDBwwbNgw7d+70qV2HDx9GTk4ORASvvvqq16TVVXx8fEDa\nAni/xzWQ7Vy2bBlsNhvWrFkDAEhLS3OWn5aWVuvY48ePY/bs2YiNjYXdbkdYWBiGDh2KdevWeSzb\nNc7Vq1dj0KBBzvtny8vLGx3jVUlVW/xhhEFEREREVxI/czUsOjpabTabbtu2TVesWKEioq1bt9a1\na9fWe15ycrK2atVKBwwYoA8//LCmpKToLbfcoiKirVq10pycHK91HT9+3G2fiKjNZtOFCxeq3W7X\n4cOH6/jx4zUiIkJFRPv3768XLlzQhIQEDQsL07Fjx+rIkSO1ffv2KiKakZERkBgdcTz99NMaFBSk\nSUlJOnHiRL3ppptURNRut+uuXbsa3b8vvfSSiogOHDiw0ed44k9bVL33eSDbuWnTJp0+fbr27t1b\n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\nB6Snp+PXv/41XnjhBXTs2DFgdQaaWGG1LRFRK8RBREREdC1z/akQIqKm8uWaYh7r90pQHHElIiIi\nIiIiS2PiSkRERERERJZmncSV01aIiIiIiIjIA+skrlVVLR0BERERERERWZB1Ete//72lIyAiIiIi\nIiILsk7i+uOPLR0BERERERERWRATVyIiIiIiIrI06ySunCpMREREREREHlgnceWIKxEREREREXnA\nxJWIiIiIiIgszTqJK6cKExERERERkQfWSVw54kpEREREREQeMHElIiIiIiIiS7NO4sqpwkRERERE\nROSBdRJXjrgSERERERGRB0xciYiIiIiIyNKsk7hyqjARERERtbCYmBjYbDZs377d4/79+/cjIiIC\nNpsNEyZMQGVlZZPr+u677/wu42r3ySefIC0tDX379kWnTp1gt9vRpUsXJCYmYuHChcjPzw9ofc3d\n55s3b0ZiYiI6duwIm80Gm82Gffv2NUvd15pWLR2AE0dciYiIiMgCRAQi4rZ99+7deOCBB1BaWor0\n9HSsWrXK43G+1vVzVFRUhIkTJzq/IOjduzeGDh2KkJAQnDlzBoWFhdi1axeysrIwZcoUZGdnB6Re\nb6/tlfDFF19g/PjxEBEkJycjIiICABAWFtYs9V9rmLgSEREREblQVbdtubm5GDVqFC5duoTHH38c\nL774YgtEdm04e/YsEhIScPToUQwePBgvv/wybr31Vrfj8vLy8Pzzz+PgwYMBqzs3NxeVlZWIjIwM\nWJnebNq0CdXV1Xjqqafw7LPPXvH6rnXWSVw5VZiIiIiILOjdd991TgteunQpnnnmmZYO6ao2e/Zs\nZ9Kam5uLVq08pyQJCQnYvHkzCgoKAlb3DTfcELCyGnLixAkAxmgyNZ117nHliCsRERERWcybb76J\ncePGoaqqCsuXL/eatO7evRtPPPEE4uPj0bVrVwQHByMyMhIpKSnYvXu3z/U67ocEgDVr1iA+Ph7t\n27dHt27d8Oijj6KkpAQAUFFRgaVLl6JPnz5o06YNoqOjsWTJElRVVQUkRtc41q9fj7vuugshISHo\n0KEDhg0bhp07d/rUrsOHDyMnJwcigldffdVr0uoqPj4+IG0BvN/jGsh2Llu2DDabDWvWrAEApKWl\nOctPS0urdezx48cxe/ZsxMbGwm63IywsDEOHDsW6des8lu0a5+rVqzFo0CDn/bPl5eWNjvGqpKot\n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\n88+xdetWhIeHB6QtTelzX89r6JxBgwZhz549mDlzJqqrq7Fx40bk5+cjMTERb7zxBtasWeNznN48\n8MAD+OUvf4mioiLMmTMHL730EjZs2IA//OEPSE9Px69//Wu88MIL6NixY8DqDDSxwmpbIqL64ovA\n998Dv/99S4dDREREdE1y/akQIqKm8uWaYh7r90pQ1hpx5VRhIiIiIiIiqsNaiSunChMREREREVEd\n1klcuaowEREREREReWCdxJVThYmIiIiIiMgDayWuHHElIiIiIiKiOqyTuHKqMBEREREREXlgncSV\nU4WJiIiIiIjIA2slrhxxJSIiIiIiojqsk7hyqjARERERERF5YJ3ElVOFiYiIiIiIyANrJa4ccSUi\nIiIiIqI6rJO4cqowEREREREReWCdxJVThYmIiIiIiMgDayWuHHElIiIiIiKiOqyTuHKqMBERERER\nEXlgncSVU4WJiIiIiIjIA2slrhxxJSIiIqIWFBMTA5vNhu3bt3vcv3//fkRERMBms2HChAmorKxs\ncl3fffed32Vc7T755BOkpaWhb9++6NSpE+x2O7p06YLExEQsXLgQ+fn5Aa2vuft88+bNSExMRMeO\nHWGz2WCz2bBv375mqfta06qlA3AKDgYqKwFVQKSloyEiIiKinykRgXj4PLp792488MADKC0tRXp6\nOlatWuXxOF/r+jkqKirCxIkTnV8Q9O7dG0OHDkVISAjOnDmDwsJC7Nq1C1lZWZgyZQqys7MDUq+3\n1/ZK+OKLLzB+/HiICJKTkxEREQEACAsLa5b6vfnxxx8xePBglJeXIy8vr8XjaSzrJK4iQOvWxqir\n3d7S0RARERHRz5Squm3Lzc3FqFGjcOnSJTz++ON48cUXWyCya8PZs2eRkJCAo0ePYvDgwXj55Zdx\n6623uh2Xl5eH559/HgcPHgxY3bm5uaisrERkZGTAyvRm06ZNqK6uxlNPPYVnn332itfXWFVVVTh5\n8iQuXLiAS5cuMXH1i2O6MBNXIiIiIrKId9991zkteOnSpXjmmWdaOqSr2uzZs51Ja25uLlq18pyS\nJCQkYPPmzSgoKAhY3TfccEPAymrIiRMnABijyVbSrl07HD58GFVVVejYsWNLh9No1rnHFeDKwkRE\nRERkKW+++SbGjRuHqqoqLF++3GvSunv3bjzxxBOIj49H165dERwcjMjISKSkpGD37t0+1+u4HxIA\n1qxZg/j4eLRv3x7dunXDo48+ipKSEgBARUUFli5dij59+qBNmzaIjo7GkiVLUFVVFZAYXeNYv349\n7rrrLoSEhKBDhw4YNmwYdu7c6VO7Dh8+jJycHIgIXn31Va9Jq6v4+PiAtAXwfo9rINu5bNky2Gw2\nrFmzBgCQlpbmLD8tLa3WscePH8fs2bMRGxsLu92OsLAwDB06FOvWrfNYtmucq1evxqBBg5z3z5aX\nlzc6xnbt2l1VSSsAYypESz+MMFS1WzfVkyeViIiIiALP+ZmLvIqOjlabzabbtm3TFStWqIho69at\nde3atfWel5ycrK1atdIBAwboww8/rCkpKXrLLbeoiGirVq00JyfHa13Hjx932yciarPZdOHChWq3\n23X48OE6fvx4jYiIUBHR/v3764ULFzQhIUHDwsJ07NixOnLkSG3fvr2KiGZkZAQkRkccTz/9tAYF\nBWlSUpJOnDhRb7rpJhURtdvtumvXrkb370svvaQiogMHDmz0OZ740xZV730eyHZu2rRJp0+frr17\n91YR0bvvvlvT0tI0LS1NV69e7Txu165dGhoaqiKivXr10kmTJun999+vwcHBKiI6depUt7Idcc6Z\nM0eDgoL03nvv1cmTJ+sdd9yh5eXlPvRgYPhyTTGP9T9nbMrJgXo4G9yzp+rRo41uPBERERE1HhPX\nhkVHR6uI6OjRo1VEtE2bNrpx48YGz/voo4/0hx9+cNv+3nvvaXBwsIaHh+ulS5fc6qovcRURjYiI\n0IMHDzq3nzt3Tvv166ciojfffLPec889tRKWPXv2aOvWrT2W60+Mjjg6d+6shYWFzu01NTWakZGh\nIqL33XdfA73zkylTpqiI6IwZMxp9jif+tEW1/sQ1kO1UVZ02bZqKiMcvPS5fvqxRUVEqIpqZmak1\nNTXOfQcOHNCuXbuqiOjKlSs9xnnddddpfn6+T/GcPXtW09LSNDU1VVNSUrSqqqrW/scee0xTU1N9\nKvPnm7jGxakeOtToxhMRERFR4zFxbZgjcXU8nnzyySaXmZqaqiKi77//vltdDSWuq1atctu3fPly\n58iia1LrMGrUKBURzc7ObnKMjjheeeUVt3OKiopURLRt27ZuSZA3I0aMUBHRxYsXe9z/8ccf67Rp\n02o9pk+frseOHWtyW1QbTlwD1U7V+hPX7OxsFRGNjY31WOZrr72mIqJxcXEe43zuuecaHYfDY489\npidOnNALFy6oiOiWLVuc+3788Udt166djhs3zqcymzNxtd7iTH//e0tHQURERER1yLZtLVq/JiU1\na31JSUnYtm0bsrKycNtttyElJaXBc0pKSrBlyxYcOHAApaWlzvtMDxw4AMC4v9MXIoIRI0a4be/V\nqxcAIDo6Gn379nXb71gM6PTp0wGJUUTw4IMPum3v0qULQkNDUVZWhjNnzqBLly4+tM6zr7/+GtnZ\n2c6frDHyHWDu3LmIjo5uclvq05ztdPwMUGpqKoKCgtz2T58+HbNmzcKRI0dw6tSpWqsgiwjGjh3r\nU33ffPMNrr/+evTo0QPvvfceAOD666937i8oKMDly5cxdOhQf5rTLKyXuHJxJiIiIiLLae7EsSWJ\nCJYtW4YtW7YgKysLkydPBoB6k9eVK1ciMzMTly9fdivLkXz5sniOQ48ePdy2hYSEeN3nur+ioiJg\nMfbs2dPj9o4dO6KsrMytLm86d+4MACguLva4f/78+Zg/f77zeUxMjHN1XldXqr8D1c6GnDx5EoD3\nVY7tdjsiIyNx+vRpt8QVgFsS35Di4mLnwlCvv/46YmNjceeddzr379ixAwAwZMgQn8ptTlxVmIiI\niIjIhSPxeeGFF7BgwQJUVVVh8uTJyMnJ8Xh8fn4+Zs2aherqamRlZeHQoUO4ePEiampqUF1djUWL\nFtUqN1Acq8s2RkvFWNftt9/ujMdfVmlLIDhGln1l9/HnQxMTE9GzZ08UFRXhgw8+cFvd+K9//Su6\ndu2KG2+80a94moO1EldOFSYiIiIiC6mbvG7YsMHtmLfffhsAMG/ePGRmZiIuLg5t27Z17vd1yuqV\nYJUYR44cCQDYt28fvvzyS7/KsEpbmqJ79+4AgCNHjnjcX1FRgVOnTtU6NhA2bNiA6upqTJgwwbmt\npqYGO3fuRJLFZ1VYL3HliCsRERERWYhr8pqamuqWvJ49exaA56m7xcXF+PTTT5slzvpYJca4uDik\npKRAVTFz5kxUVlY2eE7dkVOrtKUpHEniunXrUF1d7bZ/7dq1AIz7lSMiIgJW7+7duxEZGYm4uDjn\ntv3796OsrMzS04QBqyWunCpMRERERC3M0/TNusmrY9QPgHN6ZXZ2Ni5evOjcfv78eaSnp6OsrOzK\nB90AK8W4YsUKxMTEYOfOnUhOTsbevXs9Hrd//36Ul5e7vR5Waou/UlJSEBUVhaNHj2LRokW1kvOv\nvvoKS5cuBQAsWLAgoPX+8MMPbvfHbt26FYC1728FrJa4cqowEREREbUwb/dGuiavkyZNciavaWlp\niPUGxEIAACAASURBVIqKQmFhIWJjYzF27FiMGTMGMTExKCwsRHp6us91BVpTYmyIr20IDw9HXl4e\nBg8ejM8++wwDBw5Enz59MHr0aDzyyCMYM2YM+vXrh/79+6O0tBRDhgyplWw1tS3+9nkgXyu73Y63\n3noLoaGhyMrKQp8+fTBp0iQMHz4cAwYMQHFxMaZOnYoZM2YErE4AuOOOO3Ds2DHU1NQAAL744gv8\n9re/Rffu3WuNwlqR9RJXjrgSERERUQsRkXoXzKk78vrOO+8gNDQUBQUFyMjIQIcOHfDhhx+isLAQ\n48ePR2FhIaKiojyW2VBd9cXoaxv8jbExsfhzXrdu3bBjxw588MEHmDp1KkQEubm5yMnJQV5eHsLD\nw5GZmYnPP/8cW7duRXh4eEDa0pQ+9/W8hs4ZNGgQ9uzZg5kzZ6K6uhobN25Efn4+EhMT8cYbb2DN\nmjU+x9mQxYsXY9iwYRg5ciTmzJmD9evXo7q6GsnJyQGvK9DECqttiYjxm7TTpgFDhxr/JSIiIqKA\ncv2pECL6+bl8+XKthaw2bNiACRMmYOvWrX79hqsv1xTzWP+WUYYVR1w5VZiIiIiIiCighg8fji5d\nuuD8+fMAjNWEf/e732H06NF+Ja3NzXqJK6cKExERERERBVRBQQESEhIQEhKC6upqzJs3D3a7HX/6\n059aOrRGsVbiylWFiYiIiIiIAm79+vXo378/5s2bh0mTJqF3797Ytm0b2rdv39KhNUqrlg6gFk4V\nJiIiIiIiCrhhw4Zh2LBhLR2G36w14sqpwkRERERERFSHtRJXThUmIiIiIiKiOqyVuHKqMBERERER\nEdVhrcSVI65ERERERERUh7USV97jSkRERERERHVYL3HlVGEiIiIiIiJyYa3ElVOFiYiIiIiIqA5r\nJa6cKkxERERERER1WC9x5VRhIiIiIiIictGqpQOohVOFiYiIiK4oEWnpEIiIfGatxJVThYmIiIiu\nGFVt6RCIiPzCqcJERERERERkadZKXDlVmIiIiIiIiOqwVuLKqcJERERERERUh/USV04VJiIiIiIi\nIhfWSlw5VZiIiIiIiIjqsFbiyqnCREREREREVIf1EldOFSYiIiIiIiIX1kpcOVWYiIiIiIiI6rBW\n4sqpwkRERERERFSH9RLXv/8dUG3pSIiIiIiIiMgirJW4/v/27j1It7K+E/3315d9ZW+ugoAgCuoI\nSkRLwYMmaBIHJ16iqTMcoqlcZjLWzDgxOZ4qdTLxMJmqU2PNJVZ04klGxnImGZlcHA9JxRvRbaIJ\nGByUi6AgEEERBMF9Ze/d3c/543178+6me9O73+79ru7+fKpWrbWe9ay1nn43i7e//TxrrfHxZGws\nmZ4edUsAAADoiG4F18RwYQAAAA4zdHCtqsur6o6qurOq3rVAncuq6qaqurWqdhzxgJ4sDAAAwICJ\nYXauqvEkH0zyE0m+k+Rvq+ra1trtA3VOSPKfkvz91tr9VXXKEQ/qycIAAAAMGLbH9WVJ7mqt3dta\nO5jkmiRvnFPnZ5P8SWvt/iRprT18xCPqcQUAAGDAsMH1zCT3Dazf3y8b9JwkJ1XV56vqxqr6uSMe\n0T2uAAAADBhqqHCSxby3ZjLJi5P8eJItSf6mqq5vrd05WOmqq67qLezcmcu++MVcdt55QzYNAACA\nUdixY0d27NixbMerNsQ7U6vqkiRXtdYu76+/J8lMa+19A3XelWRza+2q/vqHk3yqtfbHA3XaoXa8\n6EXJRz6SXHTRktsFAABAd1RVWmu11P2HHSp8Y5LnVNU5VbUhyRVJrp1T5/9L8oqqGq+qLUkuTvL1\nBY9oqDAAAAADhhoq3Fqbqqq3J/l0kvEkV7fWbq+qt/W3/25r7Y6q+lSSm5PMJPnPrbWFg6unCgMA\nADBg2Htc01r7ZJJPzin73Tnr/z7Jv1/UAT1VGAAAgAHDDhVefoYKAwAAMKB7wdVQYQAAAAZ0L7ga\nKgwAAMCAbgZXPa4AAAD0dS+4GioMAADAgO4FV0OFAQAAGNDN4KrHFQAAgL7uBVdDhQEAABjQveBq\nqDAAAAADuhlc9bgCAADQ173gaqgwAAAAA7oXXA0VBgAAYEA3g6seVwAAAPq6F1wNFQYAAGBA94Kr\nocIAAAAM6GZw1eMKAABAX/eCq6HCAAAADOhecDVUGAAAgAHdDK56XAEAAOjrXnA1VBgAAIAB3Quu\nhgoDAAAwoJvBVY8rAAAAfd0LroYKAwAAMKB7wdVQYQAAAAZ0M7jqcQUAAKCve8HVUGEAAAAGdC+4\nGioMAADAgG4GVz2uAAAA9HUvuBoqDAAAwIDuBdeJiWRqKpmZGXVLAAAA6IDuBdcqw4UBAAA4pHvB\nNTFcGAAAgEO6GVw9WRgAAIC+7gZXPa4AAACkq8HVUGEAAAD6uhlcDRUGAACgr7vBVY8rAAAA6Wpw\nNVQYAACAvm4GV0OFAQAA6OtucNXjCgAAQLoaXA0VBgAAoK+bwdVQYQAAAPq6G1z1uAIAAJCuBldD\nhQEAAOjrZnA1VBgAAIA+wRUAAIBO62Zw3bYt2b171K0AAACgA7oZXE86KfnBD0bdCgAAADqgm8H1\n5JMFVwAAAJJ0NbjqcQUAAKCvu8H1kUdG3QoAAAA6oLvBVY8rAAAAEVwBAADoOMEVAACATutmcN22\nLXn88eTAgVG3BAAAgBHrZnCtSk48MXn00VG3BAAAgBHrZnBNDBcGAAAgieAKAABAxwmuAAAAdJrg\nCgAAQKcJrgAAAHSa4AoAAECnCa4AAAB0muAKAABApwmuAAAAdJrgCgAAQKcJrgAAAHSa4AoAAECn\nVWtt1G1IVbUntWN6Otm4Mdm/PxkfH03DAAAAGFpVpbVWS92/uz2u4+PJ8ccnjz026pYAAAAwQt0N\nronhwgAAAKyC4PrII6NuBQAAACPU/eCqxxUAAGBdE1wBAADotKGDa1VdXlV3VNWdVfWuI9R7aVVN\nVdWbF31wwRUAAGDdGyq4VtV4kg8muTzJ+UmurKrnL1DvfUk+lWTxj0AWXAEAANa9YXtcX5bkrtba\nva21g0muSfLGeer9iyR/nOT7R3V0wRUAAGDdGza4npnkvoH1+/tlh1TVmemF2Q/1i9qijy64AgAA\nrHvDBtfFhND3J3l3a62lN0zYUGEAAAAWbWLI/b+T5KyB9bPS63Ud9JIk11RVkpyS5LVVdbC1du1g\npauuuurQ8mWXXZbLLrtMcAUAAFiFduzYkR07dizb8arXEbrEnasmknwjyY8n+W6SLye5srV2+wL1\nP5LkT1trH59T3uZtxze+kbz+9ck3v7nkNgIAADBaVZXW2uJH384xVI9ra22qqt6e5NNJxpNc3Vq7\nvare1t/+u8McX48rAAAAQ/W4LlsjFupxnZpKNm1KDhxIxoZ+5SwAAAAjMGyPa7fT4MREsnVrsnPn\nqFsCAADAiHQ7uCaGCwMAAKxzgisAAACdJrgCAADQaYIrAAAAnSa4AgAA0GmCKwAAAJ3W/eB68smC\nKwAAwDrW/eB60knJI4+MuhUAAACMyOoIrnpcAQAA1i3BFQAAgE4TXAEAAOg0wRUAAIBOq9baqNuQ\nqmoLtmP//uS445IDB5KqY9swAAAAhlZVaa0tOdB1v8d148betHv3qFsCAADACHQ/uCaGCwMAAKxj\ngisAAACdJrgCAADQaYIrAAAAnSa4AgAA0GmCKwAAAJ0muAIAANBpgisAAACdJrgCAADQaYIrAAAA\nnSa4AgAA0GmrI7iedlrywAOjbgUAAAAjsDqC66mnJo8/njz22KhbAgAAwDG2OoJrVXLeecm3vjXq\nlgAAAHCMrY7gmvSC6113jboVAAAAHGOrJ7iee64eVwAAgHVo9QRXPa4AAADrkuAKAABApwmuAAAA\ndFq11kbdhlRVe8p2zMwkW7cmDz/cmwMAALAqVFVaa7XU/VdPj+vYWPLsZyd33z3qlgAAAHAMrZ7g\nmvSeLGy4MAAAwLqyuoKr+1wBAADWHcEVAACAThNcAQAA6DTBFQAAgE5bPa/DSZKpqd6rcHbuTDZu\nXPmGAQAAMLT18zqcJJmYSM4+O7nnnlG3BAAAgGNkdQXXxHBhAACAdUZwBQAAoNMEVwAAADpt9QXX\nc89NvvWtUbcCAACAY2T1BVc9rgAAAOvK6nodTpLs359s357s3p1MTq5swwAAABja+nodTtJ7f+vp\npyff/vaoWwIAAMAxsPqCa2K4MAAAwDqyeoOrBzQBAACsC6szuJ57rh5XAACAdWJ1BldDhQEAANYN\nwRUAAIBOW32vw0mSPXuSU07pvRJnfHzlGgYAAMDQ1t/rcJJk69bkpJOS73xn1C0BAABgha3O4Jr0\nHtDkycIAAABr3uoNrhdckHz1q6NuBQAAACts9QbXSy9NvvSlUbcCAACAFbZ6g+srXpF88YtJBx4u\nBQAAwMpZvcH1mc9MJibc5woAALDGrd7gWvVErysAAABr1uoNrongCgAAsA6s7uD6ylcKrgAAAGtc\ntQ483Kiq2pLaMT2dnHxycuedydOetvwNAwAAYGhVldZaLXX/1d3jOj6evPzlXosDAACwhq3u4Jq4\nzxUAAGCNE1wBAADotNV9j2uS7N3bu7/1+99PtmxZ3oYBAAAwtPV9j2vSC6sXXph8+cujbgkAAAAr\nYPUH18RwYQAAgDVMcAUAAKDTVv89rknv/tbzzkt+8IPeK3IAAADoDPe4Jr2HM51xRnLLLaNuCQAA\nAMts6OBaVZdX1R1VdWdVvWue7W+pqq9V1c1V9aWqunDYc87LcGEAAIA1aajgWlXjST6Y5PIk5ye5\nsqqeP6fa3Ul+tLV2YZJ/k+T3hjnngl75SsEVAABgDRq2x/VlSe5qrd3bWjuY5Jokbxys0Fr7m9ba\nD/urNyR5xpDnnN+rXpVcd11y4MCKHB4AAIDRGDa4npnkvoH1+/tlC/lHSf58yHPO76yzkvPPTz71\nqRU5PAAAAKMxMeT+i34UcFW9KskvJbl0vu1XXXXVoeXLLrssl1122dG35q1vTX7/95M3vOHo9wUA\nAGBZ7NixIzt27Fi24w31OpyquiTJVa21y/vr70ky01p735x6Fyb5eJLLW2t3zXOc4V6HM+vRR5Nn\nPSv5u79Ljj9++OMBAAAwtFG/DufGJM+pqnOqakOSK5JcO6eBZ6cXWt86X2hdViee2LvX9eMfX9HT\nAAAAcOwMFVxba1NJ3p7k00m+nuR/tNZur6q3VdXb+tXem+TEJB+qqpuq6stDtfipvPWtyR/8wYqe\nAgAAgGNnqKHCy9aI5RoqnCSPP56ccUZyyy3JmUd6ThQAAADHwqiHCnfPpk3Jm9+cfOxjo24JAAAA\ny2DtBdckectbDBcGAABYI9ZmcP2xH0sefji57bZRtwQAAIAhrc3gOjaWXHmlXlcAAIA1YO09nGnW\nzTcnr399cs89vSALAADASHg400IuvDA5/vjkc58bdUsAAAAYwtoNrknyzncmv/mbSQd6lQEAAFia\ntR1c3/KW5MEHk+uuG3VLAAAAWKK1HVwnJpKrrkp+4zf0ugIAAKxSazu4JskVVyS7dyd//uejbgkA\nAABLsPaD69hY8q//dfLe9+p1BQAAWIXWfnBNkje9KZmZST7xiVG3BAAAgKO0PoLr2Fjv6cLvfW8v\nwAIAALBqrI/gmiSve12yZUvyR3806pYAAABwFKp14L7PqmrHpB3XXZf88i8nX/tasn37yp8PAACA\nVFVaa7Xk/ddVcE16wXVqKvnIR47N+QAAANa5YYPr+hkqPOu3fiv54heTj3981C0BAABgEdZfj2uS\nXH998tM/ndx0U3L66cfuvAAAAOuQHteluOSS5G1vS37pl7zbFQAAoOPWZ3BNkn/1r5JHHkl+53dG\n3RIAAACOYH0OFZ71zW8ml16afOYzyUUXHfvzAwAArAOGCg/juc9Nfu/3kp/6qV6IBQAAoHMmRt2A\nkXvTm5JHH01e85re04af8YxRtwgAAIABgmvSe0jTo48mP/mTyV/9VXLKKaNuEQAAAH3r+x7Xuf7l\nv0w++9nkc59Ltm0bdWsAAADWhGHvcRVcB7WW/NN/mtx8c/KJTySnnjrqFgEAAKx6Hs60nKp6r8d5\n9auTiy9Obrll1C0CAABY9/S4LuS///fkHe9IPvKR5HWvG3VrAAAAVi1DhVfS9dcnP/Mzya/9WvLO\nd/Z6ZAEAADgqgutK+/a3kze/OXna03rvfD3rrFG3CAAAYFVxj+tKO/vs5G/+Jrn00uTFL+6F166G\nbAAAgDVIj+vRuPXW5Bd/MTn++F6AffazR90iAACAztPjeiy94AW93tef/MnkpS9NfvVXk4ceGnWr\nAAAA1jTB9WhNTCTvelfy9a8nMzPJ85+fXHVVsmvXqFsGAACwJgmuS3Xaaclv/3Zy443J3Xcn552X\nvPe9yQMPjLplAAAAa4rgOqxnPSv5r/81+cIXkocfTi64IPm5n+sFWgAAAIbm4UzL7dFHk6uvTj7w\ngeTUU3sh9oorej20AAAA69C6fY9ra8nBg73pwIHeNN/yzMzhb6+ZXV5ovlDZE2198ny+skxN5fiv\nfC4nf/L3c8JfXZs9F/5v+cHlP5udP/q6TG87YfHHUWeoOjAqHfhf66rlsxuOzw+G5zqC4Y2N9aZZ\nazK4PvJI8rWvJffck9x7b29+//3JY48lP/xhb9q5sxdONmxIJid789lpdn1yMhkfHzzP4uYLlc0X\ndp8qCLeWbJzak1f98BP5+z/4WF68+wu5bctL85fbX58vbH997tt43qKPo87i6gCrnz8+DcfnB8Nz\nHcFw/uzPkssvf2J9zQTX6emW665LPvzh5DOfSX7kR3q3j55zTm9+1lnJiSf2XqF6/PHJ9u29YLrq\n7NmTXHdd8qd/2vvX3LYtedWrkle/ujc3pHjZDIZaXz5L57MDAGBYaya4PvOZLSefnPzjf5xceWVy\nwgmjbtUxMDOT3Hpr8vnPJ5/7XPKXf5mcfnry8pcnl1zSm84///BuYwAAgFVmzQTXr3yl5cUvHnVL\nRmx6Orn55uT665+YHnig1/38whcmF17Ym7/gBb1uZwAAgFVgzQTXLrSjk2Zv+L3lliem225LTj75\niSD7whcmz3tecu65Ai0AANA5gut6NDOT3H33E0H25puTO+9MvvWtZNOmXoCdb3r60w9/tBcAAMAx\nILjyhNaShx7qBdj5psce691De+aZyTOe8cQ0u37mmb2HQ23aNOqfBAAAWEMEVxbv8ceT7343+c53\neu8Xuv/+w5fvv78XfDdtSk49NXna0w6fz1d2yim9dw8BAAAsQHBlebXWe1Hu97/fC7ELzWeXH344\n2bKl966iE044fH6kshNO6L0KaOtWw5cBAGCNE1wZrZmZZOfO3jDkRx/tTbPLc+dzy3btSvbt6wXf\nbduS447rzWenuesL1dmyJdm8uTefXZ6YGPUnAwAA9AmurG4zM8mePb0QO3favfupy3bv7oXfvXt7\n0+zy+PjhgXZusJ27PF/Zxo29adOmJ5YHp/nKvXMXAACeRHCFuVpLDhyYP9DOV7bQ9v37e/cF79//\n5Gmh8vHxxYfcwfLJyd60YcPSlpeyn5ANAMAxIrhCV7SWHDx4dEF3tvzgwSemAweevDxf2TDLBw70\n2jwbZCcmetP4+BPLTzUdq7rj471pbOyJ5YXKjnZ9sfvUkv8fCwBABFdgqaaneyF2aurJ0/T0/OXD\n1F3KMQ8e7C1PT/eGlc8uL8f6YveZmekF1+UOw+PjveOOjR15Wo91qp6YVvu6P3oAQBLBFWBltfZE\noF1q+J1vfTYUzx7/SNNarTNfvenpXtngNFtvta3P6lKQXmzQXq6y5TzWaj/+amrr3LLZ5fnmR9q2\n2Pmo9h31+Vdz20d9/i61fb71I9Vbx4YNrh69CnAkVU/0lMLR6lKQXsz6bJsHp6WWLeex1vrxB//Y\n0bW2zi7PNz/StsXOR7XvqM+/mts+6vN3qe3zrc/dtpDFBN0uLA+z/zXXJD/xE1kugisArJTZP3wA\nsL4tFG67vDzs/tu3ZzkJrgDAkrXWMvtrSptvfYXKDltfgbLBn20lyuZ+XsOUreRnPdvu5PBzZ87y\nQnVW8hhHc56VOMbRnGfen3uJn9lyHONoztO1f7ultHWl/u0W+pm6UL8LbfnQc5+bV27YkOUiuAKM\n2OwvizOtZWae+ZG2HarzFNtnZs+xmDpPda5las+RjjX4i/TMwPLszzD4S/xh9e0/1P6ZU/epygbV\nwLzSu5fpsPUVKEu/fKXKDp1vGcrmfjbLXbaSn3UG5wPbMnfbAnVW8hhHc54VOcZCdQb/nRY4xlLa\nupzHOJrzdO3fbiltXc5jLHScI9YZQf1Rt+WZmzZlOQmuwJLMtJap1jLdny9mWmzd6eRJ+830y6dn\n1weWn7Teb9/0wD5z91/KPnPPuZR9ZtfnBrRKMpZkrOqwec1Zn2++0L5PqvMUx1pUnRVuz+C+s3UG\nw8BYHR40Dlsf+Dlq4Fj2X/z+g7+cLbps7r1QALACBFc4hlprOdha9s/MZP/MTB6fmcmB1nJgZiYH\n+9sWs7zYegvu3z/vwSECZksyUbWoafxo6s6zPN7/hXy8vzzeXx4bWJ6oyobZ7QvsMzZn/yfVWcQ+\nY0+x/9Hsc1hw8Ms/AMCCBFfWlamZmeybmcnemZnsm54+bHlvf9vs8mC43D8QNvcPrD8+T9ng+mHb\n+2FxvCobq7JxbCybxsayYWwsG6oyWZUNY2OZ7C9PDpQvdnnz2FgmJyYy2T/Ohn75kZYnFwiNTzWN\nCVoAABwj3uNKp0y3lj3T09ndn3YNLC80DYbOvf0wOrg8WDbdWjaPjWXL+Hg294Pe7PKheT9Qbhob\nOxQuN85O/cA5uH7Y9jl1Ns1TJvABALDeDPseV8GVZTHTWnZOTeWH09N5bGoqP5yamn8+sH2+ELp/\nZiZbx8dz3CKmbePj2TI+ni1zQufmOctb+gF18/h4NlQZkgkAAMeY4Mqy2j8zk0cOHszDBw8+eT41\nlUcOHsxjc8LoY/0QunV8PCdMTOT4iYnefO76wPz48fFsm5h4UhjdrEcSAADWHMGVI5puLd8/cCDf\nO3AgDx48mO/1l7934EAeOnAgD88Jpwday8mTkzl5YiKnTE7m5MnJQ/PZ8hMnJw+F0tkgun1iIuMC\nJwAAMA/BdZ2ampnJAwcO5L79+3Pf/v15YP/+w0Lp7PTI1FROmpjI0zdsyGkbNuTpA9OpA6F0dr5t\nfNxQWgAAYFkJrmtQay0PHTyY+x5//FAwvW///nx7YP3BAwfytMnJnL1pU87auDFnDATSwYD6tMnJ\nTIyNjfpHAgAA1jHBdZXaOTWVb+3bl7sff7w337cv33r88dyzb1/u378/x42PHwqlZ23cmLM2bcrZ\nA8tnbNiQSYEUAABYBQTXDts1NZVv7tuXb+zdm2/s3ZtvzgbUffvy+MxMnr15c87dvDnP3rSpt7xp\nU561eXPO2rgxW8bHR918AACAZSG4jlhrLffv35/b9uzJHXv35hsDQfXRqak8Z/PmPG/Lljxvy5Y8\nd/PmnLd5c569eXNOnZx0LykAALAuCK7H0EMHDuTWPXsOm27bsydbxsdzwZYt+Xv9gDo7nbVxo1e7\nAAAA657gugIOzszk9r1789Xduw9Nt+zZk+nW8oKtWw9NF2zdmgu2bMkpGzaMuskAAACdJbgOadfU\nVG7esyc37dqVr+7enZt2787te/fmmZs25UXHHXdounDr1jx9wwbDewEAAI6S4HoUplvLbXv25Iad\nO3vTrl25e9++XLB1ay7qB9SLjjsuLzzuuGz1cCQAAIBlIbgewQP79+f6gZD6lV27cvqGDbl4+/Zc\nvH17Ltm+PRdu3eq1MgAAACtIcO3bOz2d/7VrV27YtetQWN0zPX1YSH3ptm05aXJymVoNAADAYow8\nuFbV5Unen2Q8yYdba++bp85vJ3ltkr1JfqG1dtOc7UcVXGdayzf37s0Nu3blhp07c/3OnfnG3r25\nYOvWXlDdti2XbN+eczdvdk8qAADAiA0bXCeGPPl4kg8m+Ykk30nyt1V1bWvt9oE6/yDJea2151TV\nxUk+lOSSoznPwwcOHAqpN+zcmS/v2pUTJyYOhdSfO+20XHTccdnkvlQAAIA1Z6jgmuRlSe5qrd2b\nJFV1TZI3Jrl9oM4bknw0SVprN1TVCVV1WmvtwfkOuHd6Ojfv3p0vDwTVhw8ezEv7IfXtZ56Zi7dv\nz6leQQMAALAuDBtcz0xy38D6/UkuXkSdZyQ5LLi+/Et/lvumN+b7MxN5xsRUzpuczvM2tLxzW8s5\nG8YzOb4/E2OPZnzPeL61byJ/NzaR8bHxTIxNZLz68/76fGWz6xNjExmrMUOIAQAAVolhg+tib0yd\nmxKftN/9v/Mfs3l6T86b2ZtTzj8pW59/cu6dmcpdM1OZbtOZmpnK9Ex/3l+fr2x2fb6y2fWZNpPx\nGp831C41DI+PjWesxp40VWr+8qqMZYHyeeo/5bEWUX82rFfqqJeT3rj0Y7m81LYu9o8Ss+d6ynoj\nOF6X27bY43W5bStxPFYXf7xcu1yza5frdu1y3a5N373lu/nbv/7bZTveUA9nqqpLklzVWru8v/6e\nJDODD2iqqv83yY7W2jX99TuS/NjgUOFj9R7XWa21ZQ/DUzNTaa1lps08aWpZoPwo6y9ln9n60236\n0M/e+n83WNRyWmb/bY5qvyGX5zv30Sw/5X8Di/ybyyiO1+W2LfZ4XW7bShyP1aULT9NnZbhm1y7X\n7drlul27PvDaD+QVZ7/i0PpIH86U5MYkz6mqc5J8N8kVSa6cU+faJG9Pck0/6D620P2tx0pVZaJ6\nPaUAAAB021DJrbU2VVVvT/Lp9F6Hc3Vr7faqelt/+++21v68qv5BVd2VZE+SXxy61QAAAKwbQ7/H\ndVkacYyHCgMAAHDsDDtUeGw5GwMAAADLTXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAnaw7\nWgAACUFJREFUAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6\nTXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAA\noNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcA\nAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1w\nBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDT\nBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAA\nOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUA\nAKDTBFcAAAA6TXAFAACg0wRXAAAAOk1wBQAAoNMEVwAAADpNcAUAAKDTBFcAAAA6TXAFAACg05Yc\nXKvqpKr6bFV9s6o+U1UnzFPnrKr6fFXdVlW3VtWvDNdcAAAA1pthelzfneSzrbXnJvmL/vpcB5P8\nWmvtgiSXJPnnVfX8Ic4JLLMdO3aMugmwLrn2YDRce7A6DRNc35Dko/3ljyb56bkVWmvfa619tb+8\nO8ntSc4Y4pzAMvMFDqPh2oPRcO3B6jRMcD2ttfZgf/nBJKcdqXJVnZPkoiQ3DHFOAAAA1pmJI22s\nqs8mefo8m359cKW11qqqHeE4xyX54yTv6Pe8AgAAwKJUawvmzSPvWHVHkstaa9+rqtOTfL619vfm\nqTeZ5M+SfLK19v4FjrW0RgAAALAqtNZqqfsescf1KVyb5OeTvK8//8TcClVVSa5O8vWFQmsy3A8A\nAADA2jZMj+tJSf4wydlJ7k3yD1trj1XVGUn+c2vtp6rqFUn+MsnNSWZP9J7W2qeGbjkAAADrwpKD\nKwAAABwLwzxVeFlU1eVVdUdV3VlV7xp1e2Atq6p7q+rmqrqpqr7cLzupqj5bVd+sqs9U1Qmjbies\ndlX1X6rqwaq6ZaBswWutqt7T/x68o6peM5pWw+q3wLV3VVXd3//uu6mqXjuwzbUHy6Cqzqqqz1fV\nbVV1a1X9Sr982b77Rhpcq2o8yQeTXJ7k/CRXVtXzR9kmWONaeg9Vu6i19rJ+2buTfLa19twkf9Ff\nB4bzkfS+2wbNe61V1flJrkjve/DyJL9TVSP/wzKsUvNdey3Jf+x/913UWvtk4tqDZXYwya+11i5I\nckmSf97Pdcv23Tfqi/NlSe5qrd3bWjuY5Jokbxxxm2Ctm/swtDck+Wh/+aNJfvrYNgfWntbaXyV5\ndE7xQtfaG5N8rLV2sLV2b5K70vt+BI7SAtde8uTvvsS1B8umtfa91tpX+8u7k9ye5Mws43ffqIPr\nmUnuG1i/v18GrIyW5LqqurGqfrlfdlpr7cH+8oNJThtN02DNW+haOyO9779Zvgth+f2LqvpaVV09\nMFTRtQcroKrOSXJRkhuyjN99ow6ungwFx9alrbWLkrw2vSEcrxzc2HpPa3NdwgpbxLXmOoTl86Ek\nz0ryoiQPJPkPR6jr2oMhVNVxSf4kyTtaa7sGtw373Tfq4PqdJGcNrJ+Vw5M3sIxaaw/0599P8j/T\nG5LxYFU9PUmq6vQkD42uhbCmLXStzf0ufEa/DFgGrbWHWl+SD+eJ4YiuPVhGVTWZXmj9b621T/SL\nl+27b9TB9cYkz6mqc6pqQ3o36F474jbBmlRVW6pqW395a5LXJLklvWvu5/vVfj7JJ+Y/AjCkha61\na5P8H1W1oaqeleQ5Sb48gvbBmtT/ZXnWm9L77ktce7BsqqqSXJ3k66219w9sWrbvvonlbfLRaa1N\nVdXbk3w6yXiSq1trt4+yTbCGnZbkf/b+v5KJJH/QWvtMVd2Y5A+r6h8luTfJPxxdE2FtqKqPJfmx\nJKdU1X1J3pvk32aea6219vWq+sMkX08yleSfNS9ZhyWZ59r7v5NcVlUvSm8Y4j1J3pa49mCZXZrk\nrUlurqqb+mXvyTJ+95XrEwAAgC4b9VBhAAAAOCLBFQAAgE4TXAEAAOg0wRUAAIBOE1wBAADoNMEV\nAACAThNcAWAeVTVdVTf1p/9VVc+sqi/1t51TVbf0l3+kql67DOf79aq6taq+1j/nS/vlv1pVm4c9\nPgCsZhOjbgAAdNTe1tpFc8ounafeRUlekuSTiz1wVU201qYG1l+e5KeSXNRaO1hVJyXZ2N/8jiT/\nLcm+o2k8AKwlelwBYJGqavec9ckkv5nkin4v6f9eVVur6r9U1Q39nto39Ov+QlVdW1V/keSzcw79\n9CQPt9YOJklr7QettQeq6leSnJHk8/39UlWvqaq/rqqvVNUfVtXWfvm9VfW+qrq5f+5zV/TDAIBj\nSHAFgPltHhgq/Cf9sjZYoR80fyPJNa21i1prf5Tk15P8RWvt4iSvTvLvqmpLf5eLkvxMa+1Vc871\nmSRnVdU3quo/VdWP9o//20m+m+Sy1tqPV9Up/eP/eGvtJUm+kuT/HGjbY621C5N8MMn7l+2TAIAR\nM1QYAOa3b56hwvOp/jTrNUleX1X/V399Y5Kz0wuWn22tPTb3AK21PVX1kiSvTPKqJP+jqt7dWvvo\nnKqXJDk/yV9XVZJsSPLXA9s/1p9fk+S3FtF2AFgVBFcAWH5vbq3dOVhQVRcn2bPQDq21mSRfSPKF\n/oOffj7J3OCa9MLvzy6iDe2pqwDA6mCoMAAMZ2eSbQPrn07yK7MrVTXbazvYK3uYqnpuVT1noOii\nJPf2l3cl2d5fviHJpbP3r/bvpx3c74qB+WBPLACsanpcAWB+8/VYtnmWP5/k3VV1U5L/J8m/SfL+\nqro5vT8Q353kDf36C/WCHpfkA1V1QpKpJHcm+Sf9bb+X5FNV9Z3+fa6/kORjVTX71OFf79dPkhOr\n6mtJHk9y5dH8sADQZdWakUQAsNpV1T1JXtJa+8Go2wIAy81QYQBYG/wlGoA1S48rAAAAnabHFQAA\ngE4TXAEAAOg0wRUAAIBOE1wBAADoNMEVAACAThNcAQAA6LT/H7NFQoGkHwmzAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1084f15d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,9))\n",
    "plt.plot(range(len(measurements[0])),Kx, label='Kalman Gain for $x$')\n",
    "plt.plot(range(len(measurements[0])),Ky, label='Kalman Gain for $y$')\n",
    "plt.plot(range(len(measurements[0])),Kdx, label='Kalman Gain for $\\dot x$')\n",
    "plt.plot(range(len(measurements[0])),Kdy, label='Kalman Gain for $\\dot y$')\n",
    "\n",
    "plt.xlabel('Filter Step')\n",
    "plt.ylabel('')\n",
    "plt.title('Kalman Gain (the lower, the more the measurement fullfill the prediction)')\n",
    "plt.legend(loc='best',prop={'size':22})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Covariance Matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108adb510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(6, 6))\n",
    "im = plt.imshow(P, interpolation=\"none\", cmap=plt.get_cmap('binary'))\n",
    "plt.title('Covariance Matrix $P$')\n",
    "ylocs, ylabels = plt.yticks()\n",
    "# set the locations of the yticks\n",
    "plt.yticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.yticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "xlocs, xlabels = plt.xticks()\n",
    "# set the locations of the yticks\n",
    "plt.xticks(np.arange(7))\n",
    "# set the locations and labels of the yticks\n",
    "plt.xticks(np.arange(6),('$x$', '$y$', '$\\dot x$', '$\\dot y$'), fontsize=22)\n",
    "\n",
    "plt.xlim([-0.5,3.5])\n",
    "plt.ylim([3.5, -0.5])\n",
    "\n",
    "from mpl_toolkits.axes_grid1 import make_axes_locatable\n",
    "divider = make_axes_locatable(plt.gca())\n",
    "cax = divider.append_axes(\"right\", \"5%\", pad=\"3%\")\n",
    "plt.colorbar(im, cax=cax);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x109a4f350>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAIDOE14BAADoPOEVAACAzhNeAQAA6DzhFQAAgM4TXgEAAOg84RUAAIDOE14BAADoPOEVAACAzhNe\nAQAA6DzhFQAAgM4TXgEAAOg84RUAAIDOE14BAADoPOEVAACAzhNeAQAA6DzhFQAAgM4TXgEAAOg8\n4RUAAIDOE14BAADoPOEVAACAzhNeAQAA6LzOhdf1jz8+3V0AAACgYzoXXr9z883T3QUAAAA6pnPh\n9RurV093FwAAAOiY7oXXqunuAgAAAB3TufB665Il2fDEE9PdDQAAADqkc+H1hQ88kO/+zd9MdzcA\nAADokM6F11dv3Zpv3HPPdHcDAACADulceF2xfHlWue8VAACAMToXXs8688z87ZIleWrDhunuCgAA\nAB3RufC6YOHCPG/dutzkea8AAAD0dS68JsmKLVuy6u67p7sbAAAAdEQnw+urjz0232htursBAABA\nR3QyvL7ypS/N3yxZkk0bN053VwAAAOiATobXI48+Oqc89FBu9rxXAAAA0tHwmiSv3rw53/j5z6e7\nGwAAAHRAZ8PrimOPzfVJ2ujodHcFAACAadbZ8Pq6s8/OplmzcsU110x3VwAAAJhmnQ2v8w45JJ85\n/fT8H4cdlp/88IfT3R0AAACmUWfDa5Kc8vzn5/L16/Nb3/teNj/11HR3BwAAgGnS6fCaJO9+61sz\ntHlzVn72s9PdFQAAAKZJtdamuw/bVVWbqD9r7703L7755lxzzDF51d//+9PQMwAAAPZVVaW1VpM5\ntvMjr0myZNmy/OdDDsnbH3gg6+6/f7q7AwAAwIAdEOE1Sd74hjfkgiefzOl//df56le/Ot3dAQAA\nYIAOiLLhsW648cZc8Pjj+c1HHskf/tZvZd4hhwyodwAAAOyLfSkbPuDCa5I8ODyci770payZNy//\n7cUvzqkveMEAegcAAMC+mHHhNUna6GiuuOaafPiww3LWunX53RNOyGvPOSc164CphAYAAJhRZmR4\n3Wb944/nM3/5l/n3W7dmS1UuTvK/v+pVGVq+fP90EgAAgEmZ0eF1mzY6mm9885v5D3fdlb9aujQn\nPfJIXr95c8496aS8/GUvc28sAADANBNexxnZtCnfvemm/NVPf5ovz5mT2xcvzvMfeCC/unlzfnXB\ngpx+wgl57nOfmyOPPnoKeg0AAMCeEF5348nHHsvf3XZbvrd6db63YUNuPfTQ3HnMMTniqady8mOP\n5VdGRnLinDlZesghGVqwIEsXLcrQkiUZOvZYI7YAAABTRHidhDY6mvtWr85dP/957nzggdyzfn2G\nt27N/VUZnjcv9x9+eB448sgcuXFjlj7xRIY2bcoztm7NUUkWzpqVo2bPzlHz5uWo+fOz8NBDc9Th\nh+eoI47IEUcckcMOOyyHHnZYDjv88MydP38g7wcAAKDrDpjwWlXnJvmTJLOTXNla+/i47QMLr3ti\ndOvWPLh2bYaHh3P/gw/mofXr89hTT+XRzZvz2NateWx0NI8leawqj86Zk8fmzs36uXOzYe7cbJw3\nLxv6wfXQTZty2ObNOXTLlhw2MtL7vnVrDh0dzaGt5dDWMjfJvCRzt31VZV5V5o75mjdrVuZu+5o9\nO/Nmz/7l8pw5mTNrVmbPmpXZs2dnVtX25dlj1s+eNSuzti2P/Zo1K7PGr5s9O7PnzOntP2fODq/N\n6gwAAOytAyK8VtXsJD9J8tok9yb5myS/0Vr70Zh9OhVep8LIpk3ZuGFDNqxf3/u+cWM2PvVUNm7a\nlA1PPZWNIyPZuHlzRkZHM7J1azZv3dpbHh3NSGvZ3P8+0lo297+PJBlJsrn/fSTJSFVGqrI1ydaq\njPa/j/8aHb9u1qxfru8vb501a/vX6LjXW2fNSps1KzU6mmots1qb8Pv25SSzRkd73yfatpPXO92W\n9NZt+z5+25jl7d/7+277Ddm2X/rrn7Zub7aPXbeTfff4+Gncfu9PfpLjnvvc3rqqPT++dvzvzvj/\nCu3t6ylpcy+Pn4o29vb4KTnn7vbfH33Yxz7ul3PuyfucoB97YnJH7d35fvSDH+TU5z9/YOfb4bhJ\nnm86zul8U3/swK9Nx/r5/dtuywte+MKBnnPKj5vUUYPvZ3Lg9HU6/nu6R+3vw7Wf7vafuWhRnvei\nFz3tfJMNr3OmpFd75swkd7XW7k6SqvqLJG9K8qNdHXSgmzt/fubOn39QTQ7VRkczOjqa1toOy6Nb\nt/a+b9s2wbrx37cvb2snefq2nR03fp/+66dt67eZpLd92/vo77NtOUna2OWdrBt7/B5tH3/OXR0/\nbnnKj9/J9jt/+tOc9OIXT+r4jNm2w+tx/xC1u/2noo2Jjm+72L7TNsacd5/7MNE5p7jNvf1ZDOSc\nTztjN865pwZ13N/97d/m3mXLOt/P6Tyn47pzzkkfN8n/Md6f/fzJd76T5y5ePNBzduK4Af8s9uXY\n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\nJEkavH8DGzh1YpqurLcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108adb310>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,9))\n",
    "plt.plot(range(len(measurements[0])),Px, label='$x$')\n",
    "plt.plot(range(len(measurements[0])),Py, label='$y$')\n",
    "plt.plot(range(len(measurements[0])),Pdx, label='$\\dot x$')\n",
    "plt.plot(range(len(measurements[0])),Pdy, label='$\\dot y$')\n",
    "\n",
    "plt.xlabel('Filter Step')\n",
    "plt.ylabel('')\n",
    "plt.title('Uncertainty (Elements from Matrix $P$)')\n",
    "plt.legend(loc='best',prop={'size':22})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### State Estimate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x109a65890>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7IAAAIyCAYAAAD2R/aYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X+4XXV9J/r3RyAoIleCETVQKZQflrbKSDIFnBKQW7CA\ntXPnap07oyNK9XECKM5FpHYMzJ2nora1M3Z6dbBepmUoPLQ6jT8o+CMgRuGCFGhR0asZAWPAJgia\niIF87x9nJ54czkl2ds4+e6+T1+t5znP2Xnvvtb5r7/Xrvb7f9V3VWgsAAAB0xdNGXQAAAADYFYIs\nAAAAnSLIAgAA0CmCLAAAAJ0iyAIAANApgiwAAACdIsgCAADQKYIsAAAAnSLIAuxhqurvq+rXRl2O\n6VTV71fVBbvw/jVV9fJhlmkuVdXRVfV3VfVoVS0fdXnYfVV1a1X94qjLATDfCLIAHdELbRur6rFJ\nf/+pj8+cOnlYa+2XWms3D6l8p+78nTN+flGSf53k/54yzh3Nc+v9jY3d/B4uSvK51toBrbUPzWa5\n+lFVL6uq1VX1SFX9Y1XdUlXH917bpfnane+hqq6vqkunGf6bVbW2qnbr+GV3l9Vd9IEkl83RtAD2\nGIIsQHe0JGe11p416e/8Pj5Tc1C22ZjWv0nyqdba41PGuavzPGq78z28MMm9071QVXsPXKI+VNUB\nST6Z5I+THJhkcZJLk/yk95Zdna/d+R7+nyT/aprh/zrJX7TWtgw43q0GLtsAv8PKJKdU1cGDTA+A\n6QmyAPNAVb2zqh7oNUn9elWdWlV/nuTnkqzs1WT+u957t9VG9R7/u6q6q6p+VFVXVNXBVfWZ3rhu\nrKpnT5rOxVX1rd5r/1BVr+oNn2laL6iqv6qqh6rq21V13g5m44wkN+3GdzDjtAaYz52N6x29cT1S\nVX9ZVfvu5Ht4yu8zTfk/n2RZkg/13ndkb1oXVdXdSR6rqqdV1YuqalVVbaiJZuJnDzqfUxyVpLXW\nrmkTftJau7G19vc7mK9hLQ//I8lBVfXPJs3bgUnOTPLf+vydDq2qv+699oPq1eRPV7YdfaeTvtft\nfocZyv0UrbWfJLkjyen9fgaAPrTW/Pnz589fB/6SfCfJy6cZfnSS7yZ5Xu/5zyU5fNJnTp1mPKf2\nHq9JsjrJoiQvSLIuEwfdL06yb5LPJfn3kz77LyZN59VJfpTk4OmmlYmTpXckeXeSvZP8fJL/L8mv\nzzB/DyV5aT/zPHVedjatXZnPPsf1lSTPy0TN5b1J3jzd97uz32ea+flCknMmPV+T5KuZqB3dN8k+\nSb6V5OJe2U5J8miSIwf5PadM+1lJfpCJ2tAzkhw403IzR8vDR5L810nP35zkq/2ML8leSe5K8gdJ\nntGb95NmWAf2nuE7PWqm32GAdfePk/zBqLch/vz58zef/tTIAnRHJflEr9Zo698bkzyRiQP1Y6tq\nn9bad1tr3+5znC3Jf26tPdxa+16SLyb5SmvtrjbRxPfjSY7b9ubWrmutfb/3+Nok30yydIZxL0ny\nnNba/9Vae6K19p0kVyT57Rne/+wkj/U5z7s6rV2Zz37G9Z9aa99vrW3IRNPRl8wwT0nyZHbt95nc\n5HXrtB7slfNXkzyztfbeXtm+kInmwP9ygPncTmvtsSQv643jvyZ5qKr+R1U9d6aCDnl5uDLJv6iq\nBb3nr+sN62d8S5M8P8n/2Vrb1Fp7vLX2pRmmc0Km/05fO3lWs/3vsJ2qemVVnVlV762q/6Oq/ryq\njpn0lscysXwDMEuGer0NALOqJfnN1trnp75QVW9LsiITYelvk1zYWlvb53jXTXq8acrznyTZf9J0\nXpfk7UkO6w3aP8lzZhjvC5O8oKo2TBq2V5KZOprakIlawclmnOcBptXvfPYzru9PGdcLZipYa+1b\nu/j7TO286v5Jj18w5XmS/M8p0+/795ymrF9P8oZkogflJH+R5IP5WVDezjCXh9bal6rqB0l+q6pu\nz0RwfVWf4zskyf9s/V1LO9N3unjKsKnvSZJU1c8lubf3O1+W5L1JfpiJWvitDsjE8g3ALBFkAeaB\n1trVSa6uqmcl+XCSyzNRgzVIj77TdoJTVS/MRHPPU5N8ubXWqurOSe+fOq3vJvlOa+2oPqd7dyaa\n4d6x60Xe5WklM3f2c/8ujmvqfD/lO9/B77Or4/9ekkOrqlprW4e/MMnXd/D5gTo1aq19o6quTHLu\nNOWYi+Uhmbge9nVJjklyfWvt4X7GV1UnJPm5qtqrtfbkdLM36fGD6e87nXZdaq19tzfNg5M81lp7\nJBM1upO9KJOu7QVg92laDNAtTwklVXVUTXTutG+SxzNR67b14H1dkiNmadrPzMTB/A+SPK2q3pDk\nlya9PnVat2WiY5yLquoZVbVXVf1S9W7nMo1PJzl5muH9BLFdndZsjmtq+bb7Hnby+/Qzvsm+kmRj\nkouqap+qWpbkrCR/ueNZ2rmauIfthVW1uPf80Ew0r/1K7y1Tf99hLw/JRPj7X5O8Kds3K97Z+G5N\nsjbJe6tqv6p6elWdOEPZbstufKdVdUxVvTjJb6RXu1xVZ016/elJ/kmSG/sZHwD9EWQBumVrT6tb\n//4qE9df/n6ShzNx8P6cJO/qvf/3k7y7d23phX1Oo0153JKktXZvJjrP+XImmtb+UpJbJr13u2n1\nmnWelYnrR7/dK99HMtHMcjr/Lclv9A78dzbP2xd416e1o/l8chfHNfVetlO/8x39Pjsr1/YvtLY5\nydlJXtEb34eS/OvW2n19jm9H9919LMk/TXJrVf0oE7/z3UneMd18zcHykNba/0zypST7JfmbKa/N\nOL7ea2cn+YVM1Nzen4nOqJ5StiTLs+vf6WS/3itHJXl6Vf1WJjou2+rsJF/Yei0xALOjftaKZpZH\nPHEgclMmduB7J7mutbaiqhYmuSYTzXbWJHl1rxkOAHu4qvqPSR5qrf3xqMsCs6GqvpKJnqinvT8w\nAIMZWpBNkqrar7W2sSZuHn5LkguS/G9JftBae19VvTMT3ftfPLRCAAAAMK8MtWlxa21j7+GCTNz7\nriV5ZX52ncuV2b4HQgAAANihoQbZqnpaVf1dJjpVuKG1dlsmbpS+9VYA65IcPMwyAAAAML8Mu0Z2\nS2vtJZm4n9s/rapfmvL6jjqdAAAAgKeYk/vIttZ+WFVfSHJ6knVV9bzW2ver6vnZvme/JElVCbcA\nAADzWGttoHudJ0MMslX1nCRPtNYeqapnZOI+cO/NRPf5r8/EzeBfn+QT031+mJ1QATNbsWJFVqxY\nMepiwB7HugejYd2D0agaOMMmGW6N7POTXFlVe2WiCfM1rbVP97qhv7aq3pje7XeGWAYAAADmmaEF\n2dbaPUn+yTTD1yc5bVjTBQAAYH4bamdPQPcsW7Zs1EWAPZJ1D0bDugfdVON4LWpVtXEsFwAAALuv\nqnarsyc1sgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdMrQ7iMLAAAwWdXAndTSEXN19xlB\nFgAAmDNuszl/zeWJCk2LAQAA6BRBFgAAgE4RZAEAAOgUQRYAAIBOEWQBAADoFEEWAACAThFkAQAA\n6BRBFgAAgE4RZAEAAMbMT3/60yxdujTHHHNM1q9fP+rijB1BFgAAYMw88cQTefDBB7N27dps3Lhx\n1MUZO9VaG3UZnqKq2jiWCwAAGFxVxXF+/zZt2pTNmzfngAMOGHVR+rIrv2/vvTXwtMZxQRJkAQBg\n/hFk57e5DLJ7D/pBAAAAZt8//uM/5tJLL01rLd/85jdz7rnn5rTTTstFF12UfffdN4888kguv/zy\nPP/5zx91UUdGkAUAABgTjz/+eN74xjfmQx/6UA455JDcfffdWbJkSc4+++x8+MMfzic+8Ymce+65\neclLXpILL7xw1MUdGZ09AQAAjIkPf/jDueCCC3LIIYckSZ7xjGdk8+bNOe6443LQQQelqvLiF784\nZ5999ohLOlpqZAEAgE6oga+o3H1zdWnvwoULc8opp2x7/tWvfjVJcsYZZyRJzjnnnJxzzjlzU5gx\nprMnAABgTujsade95S1vyTXXXJP169enRpnk+zCXnT1pWgwAADCmPv/5z+dlL3vZ2IfYuSbIAgAA\njKEHHngg3/rWt3LyySdvN/xjH/vYiEo0PgRZAACAMfDwww9n6dKlefe7350kuf7665Mkxx9//Lb3\n3HffffnGN74xkvKNE0EWAABgDNx00025/fbbs2DBgvz4xz/Opz71qSxatCiPPvpokon7y7773e/O\nJZdcMuKSjp7OngAAgDmhs6cd+/GPf5y3ve1tWbBgQTZu3Jj3vOc9uf/++3PZZZfl0EMPzZYtW7Ji\nxYocdthhoy7qtOaysydBFgAAmBOC7Pym12IAAACYgSALAABApwiyAAAAdIogCwAAQKcIsgAAAHSK\nIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABA\npwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAADBmfvrTn2bp0qU55phjsn79+lEXZ+wIsgAAAGPmiSee\nyIMPPpi1a9dm48aNoy7O2KnW2qjL8BRV1caxXAAAwOCqKo7z+7dp06Zs3rw5BxxwwKiL0pdd+X17\n762BpzWOC5IgCwAA848gO7/NZZDde9APAgAAMLs2bNiQd7zjHXn88cezefPmXH311dlrr722vb58\n+fJs2LAhV1111QhLOXpqZAEAgDmhRnbnli9fnosvvjgHHnhgnvWsZ2XlypU588wzkySbN2/Os5/9\n7LziFa/IddddN+KSPtVc1sjq7AkAAGAM3HfffVm0aFEOOeSQfP7zn0+SLFq0aNvrt99+ezZt2pRT\nTz11VEUcG5oWAwAAnVCXDlyBt9vae4Zfk/zwww/nDW94Q5LkiiuuyOGHH56lS5due/3mm29Okpxy\nyilDL8u4E2QBAIBOmIswOUonnXRSkmTdunX59Kc/nRUrVmz3+he/+MUcfPDBedGLXjSC0o0XTYsB\nAADGyHXXXZcnn3wyr371q7cN27JlS770pS9l2bJloyvYGBFkAQAAxsitt96aF7zgBTnyyCO3Dbvn\nnnvywx/+ULPiHkEWAABgjDz00EN54QtfuN2wz372s0lcH7uVIAsAADBGlixZkjVr1mTLli1Jkjvv\nvDOXXXZZFi9evF0t7Z5MZ08AAABj5JJLLsl3v/vdnHnmmTniiCOy//7758knn8zLX/7yURdtbAiy\nAAAAY+bKK6/c9vi6667Lxo0b87rXvW6EJRov1dr4dWFdVW0cywUAAAyuquI4f8dOP/30rF69Ot/7\n3vfyrGc9K1u2bMkJJ5yQxYsX56//+q9HXbwd2pXft/fegW8M7BpZAACAMXH77bfnxBNP3Nac+Pzz\nz8++++6bP//zPx910caKGlkAAGBOqJHduc9+9rO54YYbsmnTpqxbty4nnnhizj///DztaeNfBzmX\nNbKCLAAAMCcE2flN02IAAACYgSALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0\nytCCbFUdWlVfqKp/qKq/r6rze8NXVNUDVXVn7++MYZUBAACA+aeGdUPiqnpekue11v6uqvZPckeS\nVyV5dZLHWmt/uIPPNjdKBgCA+aWq4jh//tqV37f33hp0WnsP+sGdaa19P8n3e49/VFVfS7K49/LA\nBQYAAGDPNifXyFbVYUmOS/KV3qDzququqvpoVT17LsoAAADA/DC0Gtmtes2Kr0tyQa9m9k+TXNZ7\n+T8k+YMkb5z6uRUrVmx7vGzZsixbtmzYRQUAAGAIVq1alVWrVs3a+IZ2jWySVNU+ST6Z5DOttQ9O\n8/phSVa21n55ynDXyAIAwDzjGtn5bS6vkR1mr8WV5KNJ7p0cYqvq+ZPe9ltJ7hlWGQAAAJh/htlr\n8cuS3Jzk7iRbJ3JJktcmeUlv2HeSvLm1tm7KZ9XIAgDAPKNGtn8//elP87KXvSyPPvpoVq9enYUL\nF466SDs1X3otviXT1/h+ZljTBAAAmA+eeOKJPPjgg/nRj36UjRs3diLIzqWhXiM7KDWyAAAw/6iR\n3TWbNm3K5s2bc8ABB4y6KH2ZyxpZQRYAAJgTguz8Ni+aFgMAALDr/vEf/zGXXnppWmv55je/mXPP\nPTennXZaLrroouy777555JFHcvnll+f5z3/+zkc2TwmyAAAAY+Lxxx/PG9/4xnzoQx/KIYcckrvv\nvjtLlizJ2WefnQ9/+MP5xCc+kXPPPTcveclLcuGFF466uCMztNvvAAAAsGs+/OEP54ILLsghhxyS\nJHnGM56RzZs357jjjstBBx2UqsqLX/zinH322SMu6WgJsgAAAGNi4cKFOeWUU7Y9/+pXv5okOeOM\nM5Ik55xzTu68884ceeSRIynfuNDZEwAAMCd2t7Onj3zkI7NYml3zO7/zOyOZ7lve8pZcc801Wb9+\nfaoG7htpTui1WJAFAIB5R6/Fu+6oo47K0UcfnZUrV87pdG+66ab83u/9Xh544IF8+9vf7uszcxlk\nNS0GAAAYQw888EC+9a1v5eSTT95u+Mc+9rGhT/vkk0/OK1/5yixZsmTo0xqEIAsAADAGHn744Sxd\nujTvfve7kyTXX399kuT444/f9p777rsv3/jGN+akPDfffHOWLVs2J9PaVYIsAADAGLjpppty++23\nZ8GCBfnxj3+cT33qU1m0aFEeffTRJBP3l333u9+dSy65ZOhl2bJlS2655ZbtOp4aJ66RBQAA5oRr\nZHfsxz/+cd72trdlwYIF2bhxY97znvfk/vvvz2WXXZZDDz00W7ZsyYoVK3LYYYdt+8z73ve+3HXX\nXbnkkkuyevXq/OAHP8j++++f8847L0ny2c9+NrfccksWL16cu+66KxdeeGEOP/zwJMnnPve5rFy5\nMkcccURaa1m5cmVuvPHGJMmdd96Z3/iN38jatWv7Lr/OngRZAACYdwTZ2bV69eosWLAg11xzTb72\nta/l4x//eN70pjdl06ZNufbaa3P11Vfnhhtu2HZN7fvf//687GUvywknnJAvfOELOe+883Lbbbdl\nv/32y/Lly/Ptb387n/70p5MkH/zgB3Prrbfm6quv7rs8OnsCAABgh773ve/lpS99ab7yla/knHPO\nyT777JN3vetd+ZM/+ZNs3Lgxb33rW3P00UfniiuuyAc+8IEsW7YsJ5xwQlprefOb35y3v/3t2W+/\n/ZIkjzzyyHbXw950001j26w4USMLAADMETWys2/Tpk1ZuHBhHnjggRx00EHbhl9//fV5/etfn3Xr\n1j3lM7feemtOOOGErF27NgcffHCS5LDDDsu1116bpUuXprWW5z73uVm9enWOPPLIvsuiRhYAAICd\nWr16dY444ojtQmySPProo1m0aNFT3v/kk09mzZo1Wbx48bYQu2bNmqxfvz7HH398vvzlL+eee+7J\nggULcuSRR2bVqlVzMRu7bO9RFwAAAIDBrFq1atpb5Jx00kl5+OGHs3nz5uyzzz5JkpUrV2bBggU5\n9thj87Sn/axO84/+6I9y/PHHZ/Pmzbnjjjvy3Oc+NyeeeGIeffTR3HvvvWN5Cx5NiwEAgDmhafHs\ne81rXpNzzjknp59++lNeu+qqq3Lrrbfm2GOPzU9+8pMsWbIkJ554YpLk0ksvzdOf/vTss88+WbJk\nSS6//PIcf/zxWb58eZ588sm85S1vya/8yq/koosuyjOf+cy+yqLXYkEWAADmHUF2fnONLAAAAMxA\nkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACg\nUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAAAYMz/96U+zdOnSHHPMMVm/fv2o\nizN2BFkAAIAx88QTT+TBBx/M2rVrs3HjxlEXZ+xUa23UZXiKqmrjWC4AAGBwVRXH+f3btGlTNm/e\nnAMOOGDURenLrvy+vffWwNMaxwVJkAUAgPlHkJ3f5jLI7j3oBwEAAJhdGzZsyDve8Y48/vjj2bx5\nc66++urstdde215fvnx5NmzYkKuuumqEpRw9NbIAAMCcUCO7c8uXL8/FF1+cAw88MM961rOycuXK\nnHnmmUmSzZs359nPfnZe8YpX5LrrrhtxSZ9qLmtkdfYEAAAwBu67774sWrQohxxySD7/+c8nSRYt\nWrTt9dtvvz2bNm3KqaeeOqoijg1NiwEAgE74yEc+MrJp/87v/M7Qp/Hwww/nDW94Q5LkiiuuyOGH\nH56lS5due/3mm29OkpxyyilDL8u407QYAACYE5oW92fdunU55JBDsmLFivzu7/7utuFnnXVW7rjj\njqxdu3aEpZuZpsUAAAB7qOuuuy5PPvlkXv3qV28btmXLlnzpS1/KsmXLhj79m266Kb/2a7+Www8/\nfOjTGpQgCwAAMEZuvfXWvOAFL8iRRx65bdg999yTH/7wh3PSrPjkk0/OK1/5yixZsmTo0xqUIAsA\nADBGHnroobzwhS/cbthnP/vZJHN3fezNN988J7W/gxJkAQAAxsiSJUuyZs2abNmyJUly55135rLL\nLsvixYu3q6Udli1btuSWW24Z606l9FoMAAAwRi655JJ897vfzZlnnpkjjjgi+++/f5588sm8/OUv\n3/ae973vfbnrrrtyySWXZPXq1fnBD36Q/fffP+edd16SiRrcW265JYsXL85dd92VCy+8cNs1r5/7\n3OeycuXKHHHEEWmtZeXKlbnxxhu3jfuuu+7Kvvvum2OOOWZuZ3wXCLIAAABj5sorr9z2+LrrrsvG\njRvzute9LkmyevXqnHrqqXn44Yfzzne+Mx//+Mfzpje9KZs2bcp5552Xq6++OjfccEM+9rGPJUne\n//73Z926dTn88MPzhS98IRdccEFuu+227Lffflm+fHn22Wef7aZ90003jXWz4kTTYgAAgLFx+umn\n57nPfW4ee+yxJBPNfN///vfnVa96VU499dQkyfe+97289KUvzVe+8pWcc8452WefffKud70rf/In\nf5KNGzfmrW99a44++uhcccUV+cAHPpBly5blhBNOSGstb37zm/P2t789++23X5LkkUceeUpovemm\nm8a6WXHiPrIAAMAccR/ZnTvooINy/PHH5/rrr8+WLVtywQUX5O67785nPvOZPPOZz9z2vk2bNmXh\nwoV54IEHctBBB20bfv311+f1r3991q1b95Rx33rrrTnhhBOydu3aHHzwwUmSww47LNdee22WLl2a\nJGmt5bnPfW5Wr169y9fjuo8sAADAHuiaa67Ji1/84px//vl57Wtfm1/4hV/IqlWrtguxyUTz4iOO\nOGK7EJskjz76aBYtWvSU8T755JNZs2ZNFi9evC3ErlmzJuvXr8/xxx+fL3/5y0kmbvOzYMGCHHnk\nkVm1atVwZnIWuEYWAABgTJx22mk57bTTdvq+VatWTXsd60knnZSHH344mzdv3nbt68qVK7NgwYIc\ne+yxedrTflaX+Ud/9Ec5/vjjs3nz5txxxx054YQT8rWvfS0nnnhiHn300dx7771je62spsUAAMCc\n0LR49rzmNa/JOeeck9NPP/0pr1111VW59dZbc+yxx+YnP/lJlixZkhNPPDFJcumll+bpT3969tln\nnyxZsiSXX355jj/++CxfvjzPec5zsm7durzlLW/Jr/zKr+Siiy56Sk3wjsxl02JBFgAAmBOC7Pzm\nGlkAAACYgSALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAA\ndIogCwAAQKfsPeoCAAAAe46qGnURmAcEWQAAYE601kZdBOYJTYsBAADoFEEWAACAThFkAQAA6BRB\nFgAAgE4RZAGAObNwYVK147+FC0ddSgDGnSA7Zqbu4O3MAeiq6UJrkrS2479E2KX7plv+py63/bwH\nmJ4gO2Y2bNh+Z75hw6hLBMBkwzrh2E9NZdcOeKfu01pL1q/f+efWr9952O1n/6j2l2HpZ9lKdn6S\nZrr3jNOxn3WIcSbIjrkDD7TBABgnU8NZsvNt9KAHvbMR5voxaK3QzubrwANnp3z9GLT2d5xCA+Nr\n6vKV7HzZmu6kzdSTNNO9Z7pjv7k6FhxkPq1DjMrQgmxVHVpVX6iqf6iqv6+q83vDF1bVjVV1X1Xd\nUFXPHlYZxk0/BzJTd/rTnZW2wQDYdYPULEz3mZ1tp5PBAlU/NZXDMl3N6dR9zSBBcZjzNPVgf7qy\n9DP9qeNxspjpTF1Hhrlsz1aLhH7sLLgOsg5Zj5grw6yR3Zzk7a21Y5P8apJ/W1UvSnJxkhtba0cl\n+Vzv+R5hugOF2djpauYB7Olmq8Zz6sHhIE1jpzsIHWVIHeQkajJ7QXFY+qnZGmQ80wWEPaX/ij1l\nPvsx9buYy9YF/ZitY8HZCOjTbfOS+bcsuZ55/AwtyLbWvt9a+7ve4x8l+VqSxUlemeTK3tuuTPKq\nYZVhmEa5se/nTF2yZ65os9U8bi6vedtTfhsYpmGdKBy3g9ep+jmYTYbXBHJPsaf0X7GnzOdU/bQ2\nGLflf9yPBftpqdK1459+Wq4wt+bkGtmqOizJcUluTXJwa21d76V1SQ6eizLMtp1dIzXqFbSfM8zz\nQT/XcgzSPG62vq9+Dq4H6bBk0GXL2fbZ5zudX7oW3vo5mB33eRg3050cmI0TGoN05jXMk7H9NJvv\np9n1fNgGDtop2bjrJ0zO1cm6Ll4q10+tvEsTRqva1iV7WBOo2j/JTUn+Q2vtE1W1obV24KTX17fW\nFk75TDvrrLO2PT/qqKNy9NFHD7WcAAAADMc3vvGN3Hfffduef/KTn0xrrQYd31CDbFXtk+STST7T\nWvtgb9jXkyxrrX2/qp6f5AuttWOmfK4NO2DviqqfncnaFQsXbn+26cADR3eGb2pZBi3PoOPZ2XfR\nz3iHNe1+TTf9nRnWd9xPWQb5bvo1ddz9rCODrkfDMlvf4WyMd9y+m2EZ9XYIumjq9qGf5X+6bcoo\ntzPjto1mMxVaAAAaXElEQVQbt/LsqYZ1fDZbxz+ztV+xvM2sqnYryA6z1+JK8tEk924NsT1/k+T1\nvcevT/KJYZVhULN1gf84NVEbtEnHIE13p7Ozptj9jHe27kc4Wx2C9PM3W50mTB3PbDUnHGSepvv9\nxv06wunM1jWVUw3y2wzaaUfXmvQNen1RP9shIZb5apBOt4bVPHpQw2p+2U+/GP00oWY0+mn63M9f\nsuvjmfqZubwsQ/8ps2doNbJV9bIkNye5O8nWibwryW1Jrk3yc0nWJHl1a+2RKZ+dsxrZPfnMfj9n\nsAapaRtWrcue8rvMV4OckRzm+tm1M6SD1sKM0rC2MUC3zdY63U/Ns+0HozbI8ex0y+18PC7e3RrZ\nvWezMJO11m7JzDW+pw1rurtqaw3Bnmjqwr/1DNFk/Zy13HqmdfLz2fhOu75ysuum20hPtyGfupxO\nNR827lPtSo+7U4cNo4lVv5/Z2bZgujJP9x4A6KJBjkdm2p9PPUmzM4NcrtalY6ihBVm6Z3ea3MLO\n9BtYdhZ8+lnepobdLm2Ud8d089jPjq6fE3rTfadOWAGD6OekW78ny3Y2bifC6KJBT15P957pWi1M\nNvUYYKaKrXHcX8/rIDvoRhCYfXO5AZyt1gbzwWzVeI7jDgzopum2J7N1ssy2ij3FsJb1QU+Kj6Jm\nd+i33xnEbF0j67oIAACACbPRy3M/fV7MVKG4ffPoMe21eNj66akOAACACYPczaOfHqantu6a6S4O\ns6mzNbJ6qgMAAOimPbZGFgAAgD3TvOrsSU91AAAA819ngux0FxlPpac6AACA+a8z18i63hUAAGB+\ncI0sAAAAexRBFgAAgE4RZAEAAOgUQRYAAIBOEWQBAADoFEEWAACAThnb+8jWlI6Yp7tvLAAAAHue\nsQ2y7hkLAADAdDQtBgAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFME\nWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6\nRZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAA\noFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkA\nAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQ\nBQAAoFMEWQAAADpFkAUAAKBTdhpkq+qOqvq3VXXgXBQIAAAAdqSfGtnfTrI4yf9bVX9ZVadXVQ25\nXAAAADCtaq3198aqpyU5K8mfJtmS5M+S/HFrbf2sF6qq9VsuAAAAuqWq0lobuIK0r2tkq+rFSf4w\nyfuT/FWS/z3JY0k+P+iEAQAAYBB77+wNVXVHkh8muSLJO1trj/de+kpVnTTMwgEAAMBUO21aXFWH\nt9a+PWXYz7fWvjO0QmlaDAAAMG/NRdPi6/ocBgAAAEM3Y9PiqnpRkl9M8uyq+udJKklLckCSp89N\n8QAAAGB7O7pG9ugkZyf5X3r/t3osybnDLBQAAADMpJ9rZE9orX15jsqzdZqukQUAAJindvca2RmD\nbFW9s7V2eVX952lebq218wed6E4LJcgCAADMW7sbZHfUtPje3v87MnFt7LZpTnkOAAAAc2anTYt3\na+RVf5bkzCQPtdZ+uTdsRZI3JXm497Z3tdaun/I5NbIAAADz1NBvv1NVN1bVsyc9X1hVf9vn+D+W\n5Iwpw1qSP2ytHdf7u36azwEAAMC0+rmP7KLW2iNbn7TW1ic5uJ+Rt9a+mGTDNC8NnLwBAADYs/UT\nZJ+sqhdufVJVhyXZspvTPa+q7qqqj06u7QUAAICd6SfI/m6SL1bVX1TVXyS5OckluzHNP03y80le\nkmRtkj/YjXEBAACwh9lRr8VJktba9VX10iT/tDfoba21Hww6wdbaQ1sfV9UVSVZO974VK1Zse7xs\n2bIsW7Zs0EkCAAAwQqtWrcqqVatmbXx99VpcVb+Z5Ne2lqG1Nm34nOGzhyVZOanX4ue31tb2Hr89\nyZLW2r+c8hm9FgMAAMxTu9tr8U6DbFW9N8mSJFdlopOm305ye2vtXX0U7uokJyd5TpJ1Sd6TZFkm\nmhW3JN9J8ubW2ropnxNkAQAA5qm5CLL3JHlJa+3J3vO9kvzd1hrWYRBkAQAA5q+h30c2EzWnk3sW\nfnZvGAAAAMy5nXb2lOT3k3y1qlb1np+c5OKhlQgAAAB2oN/Onl6QietkW5LbWmvfH2qhNC0GAACY\nt4Z2jWzvljuTX9w6kZYkrbWvDjrRnRZKkAUAAJi3hhlkV2UH18K21k4ZdKI7I8gCAADMX0PvtXgU\nBFkAAID5a+i9FlfVM6vq96rqv/aeH1lVZw06QQAAANgd/dx+52NJfprkxN7z7yX5j0MrEQAAAOxA\nP0H2iNba5ZkIs2mt/Xi4RQIAAICZ9RNkH6+q/bY+qaojkjw+vCIBAADAzPae6YWq+i9J/nuSFUk+\nk+SQqvrvSU5K8m/monAAAAAw1Y5uv/O2JK9J8oIkNyS5P8lXk3yltfaDoRZKr8UAAADz1tBvv1NV\nhyX57d7fMzJRS3t1a+2+QSe600IJsgAAAPPWnN5HtqqOy0Qvxr/cWttr0In2MR1BFgAAYJ6ai/vI\n7l1Vr+xdH3t9kq8n+eeDThAAAAB2x46ukf31TDQnPjPJbUmuTvI3rbUfDb1QamQBAADmraE1La6q\nz2civP5Va239oBMYqFCCLAAAwLw1p9fIzhVBFgAAYP4a+jWyAAAAME4EWQAAADpFkAUAAKBTBFkA\nAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQ\nBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBT\nBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAA\nOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUA\nAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZ\nAAAAOkWQBQAAoFMEWQAAADpl71EXYNQWXr4wG36yYbthBz79wKx/5/oRlQgAAIAd2eOD7IafbEh7\nT9tuWF1aIyoNAAAAO7PHB1kAABgFLQNhcIIsADBnpjtwn2rqgbyDfbqo32V9asvAhZcv3K51oGUd\nptfZIDvoTm3q5w58+oFDKR8AzKSfA9x+jPsB7kz76qkH7tN9buqB/CCXAU23zx/n74vxNcg628+y\nPp2py+jU9WHruOdiWR7kxBPMlc4G2emube3nDNZ0n5vqwKcf6EwYANMaJBxN95lBDnCnGvc+HfrZ\n505nkH1uP6F5lIGAbht0WZ4N0y2fw1r3B9lWjft2iPmrM0G2n5rUqSv6oCvWbI1nqkHP5tnBdpfa\nAJh/ph7QTheOppqt4Dos/bRyGnQfNizTnXTe2Xc83fZXM066aOryP9N75uIk23RlsR4xF4YaZKvq\nz5KcmeSh1tov94YtTHJNkhcmWZPk1a21R3Y2rlGeCZvOIAFlkHmYbiOlmcfMBj0YG9b31c8B71z+\nVrNRk9Tv5/YUTlaMh2E11Z1p+Z9s3H/vQa/Tm7qtGrf98Gx978M6ed1Ftmc/M+6XovXzu8xWS8VB\nyrInr0fMnWHXyH4syX9O8t8mDbs4yY2ttfdV1Tt7zy8exsRnOkM0G6au+MNaYWeah0GuLxrlzmhY\nO8d+ziT2czA2V9/XoBv72Qygs1GTNPUz8/XkyiABwM57NGYrZI17eJuq31qZQeZhuhrPPdWeEvDm\n6thm3Ax6Lfe4G+VJmvl4mZ4T++NnqEG2tfbFqjpsyuBXJjm59/jKJKsypCA7WwtWP4F4WM0qBv38\nbG28ZrN3yUEC1GzUcvdzMDbI9zVbG7R+NvbDaso4W+tIP7/DuB0QDVpLtTP9/J57ykFxF3UtvA1z\nubFM/sx8DHj9tDbYU7Zn437CarYMs4JnqnHqsGq2TLec9HNiv2vz2SWjuEb24Nbaut7jdUkOHkEZ\ndkk/C9+4N6sYNGj3s3Hvp3fJqfr5TvvdOOzMIBuPQWs5pvsudrV8M23sd/SZuda1g/3pDOvApd/f\nc74dFM8Xo163GL1hHewP2vx90OscZ2P/Psj2rAuBZdybDQ/LKH+DcT9Onk4/y0k/1+qP+3x2WbU2\n3DNQvRrZlZOukd3QWjtw0uvrW2sLp3ymnXXWWdueH3XUUTn66KOHWk4AAACG4xvf+Ebuu+++bc8/\n+clPprU2cNIfRY3suqp6Xmvt+1X1/CQPTfemlStXbve8Lq09otkHzFdzeR1tP9uLrm1T5sN1yNN9\n5/38DvOh6SJ7ntlabqeuI+PWqWE/5qqfjH7H3bXt/3w1W5ev9WPqeKZbBoa1nPazDu+svPNV1e7V\nVo8iyP5Nktcnubz3/xMjKAMwx+Zyg9xv0/AuGaSHymR4zRLn8lYse8r1a8wvw+qnYy77P5gtw+p0\naHeuWWT0Bu15eZD9QT+Xfg1rvRlkHZ6tvmTG7aTWbBv27XeuzkTHTs+pqvuT/Psk701ybVW9Mb3b\n7wyzDMCeZ75soHdVP9cgDbM360HMx5MOMJv21O3ZbHEirNuGdZutuTTItAc9eT3VfL/zxLB7LX7t\nDC+dNszpAjBh3GtzxnHHCAxXPx1Q9ntwvbNxOxHGfLUn33liq1E0Le7LXHUPDjCfCYrAuJluuzRb\nTUht82D2jeutuIbea/EgqqqNY7kAAAC6ajYC56CdziXZ/vaDVbvVa7EgCwAAwJza3SD7tNksDAAA\nAAybIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiAL\nAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcI\nsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0\niiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAA\nQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIA\nAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIog\nCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECn\nCLIAAAB0iiALAABApwiyAAAAdIogCwAAQKcIsgAAAHSKIAsAAECnCLIAAAB0iiALAABApwiyAAAA\ndIogCwAAQKfsPaoJV9WaJI8meTLJ5tba0lGVBQAAgO4YWZBN0pIsa62tH2EZAAAA6JhRNy2uEU8f\nAACAjhllkG1JPltVt1fVuSMsBwAAAB0yyqbFJ7XW1lbVoiQ3VtXXW2tf3PriihUrtr1x2bJlWbZs\n2dyXEAAAgN22atWqrFq1atbGV621WRvZwIWoek+SH7XW/qD3vI1DuQAAAJh9VZXW2sCXmo6kaXFV\n7VdVz+o9fmaSX09yzyjKAgAAQLeMqmnxwUk+XlVby3BVa+2GEZUFAACADhmLpsVTaVoMAAAwf3Wy\naTEAAAAMSpAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAA\nOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUA\nAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZ\nAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpF\nkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACg\nUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAA\nADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAF\nAACgUwRZAAAAOkWQBQAAoFMEWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgUwRZAAAAOkWQBQAAoFME\nWQAAADpFkAUAAKBTBFkAAAA6RZAFAACgU0YSZKvqjKr6elV9s6reOYoyAAAA0E1zHmSraq8kH0py\nRpJfTPLaqnrRXJcDmN6qVatGXQTYI1n3YDSse9BNo6iRXZrkW621Na21zUn+MslvjqAcwDTs0GE0\nrHswGtY96KZRBNnFSe6f9PyB3jAAAADYqVEE2TaCaQIAADBPVGtzmyur6leTrGitndF7/q4kW1pr\nl096j7ALAAAwj7XWatDPjiLI7p3kG0lenuR7SW5L8trW2tfmtCAAAAB00t5zPcHW2hNVtTzJ3ybZ\nK8lHhVgAAAD6Nec1sgAAALA7RtHZ0w5V1RlV9fWq+mZVvXPU5YH5rKrWVNXdVXVnVd3WG7awqm6s\nqvuq6oaqevaoywldV1V/VlXrquqeScNmXNeq6l29/eDXq+rXR1Nq6L4Z1r0VVfVAb993Z1W9YtJr\n1j2YBVV1aFV9oar+oar+vqrO7w2ftX3fWAXZqtoryYeSnJHkF5O8tqpeNNpSwbzWkixrrR3XWlva\nG3Zxkhtba0cl+VzvObB7PpaJfdtk065rVfWLSV6Tif3gGUn+S1WN1f4aOmS6da8l+cPevu+41tpn\nEusezLLNSd7eWjs2ya8m+be9XDdr+75xWzmXJvlWa21Na21zkr9M8psjLhPMd1N7i3tlkit7j69M\n8qq5LQ7MP621LybZMGXwTOvabya5urW2ubW2Jsm3MrF/BHbRDOte8tR9X2Ldg1nTWvt+a+3veo9/\nlORrSRZnFvd94xZkFye5f9LzB3rDgOFoST5bVbdX1bm9YQe31tb1Hq9LcvBoigbz3kzr2gsysf/b\nyr4QZt95VXVXVX10UtNG6x4MQVUdluS4JLdmFvd94xZk9TwFc+uk1tpxSV6RiSYf/2zyi22iNzjr\nJQxZH+ua9RBmz58m+fkkL0myNskf7OC91j3YDVW1f5K/SnJBa+2xya/t7r5v3ILsg0kOnfT80Gyf\nzIFZ1Fpb2/v/cJKPZ6IJx7qqel6SVNXzkzw0uhLCvDbTujZ1X3hIbxgwC1prD7WeJFfkZ80XrXsw\ni6pqn0yE2D9vrX2iN3jW9n3jFmRvT3JkVR1WVQsyccHv34y4TDAvVdV+VfWs3uNnJvn1JPdkYp17\nfe9tr0/yienHAOymmda1v0ny21W1oKp+PsmRSW4bQflgXuodPG/1W5nY9yXWPZg1VVVJPprk3tba\nBye9NGv7vr1nt8i7p7X2RFUtT/K3SfZK8tHW2tdGXCyYrw5O8vGJ7Uz2TnJVa+2Gqro9ybVV9cYk\na5K8enRFhPmhqq5OcnKS51TV/Un+fZL3Zpp1rbV2b1Vdm+TeJE8keWtz03cYyDTr3nuSLKuql2Si\n2eJ3krw5se7BLDspyb9KcndV3dkb9q7M4r6vrJ8AAAB0ybg1LQYAAIAdEmQBAADoFEEWAACAThFk\nAQAA6BRBFgAAgE4RZAEA/v927ibUqiqMw/jzB03MigoHEfQBUQMHxeESGlJoghCRgyKkJjlqqBEN\nhEuTgiAcKGqTBoE0UAsnTrRExEEXHJhoTUIoJ9YkRCwz8ONtcNeB3eFIx7p625fnB5u91tprr7XO\nmb37XXtLknrFQFaSpAkkuZ7kVDu+TfJYkm/atceTfNfKzyR5aQ7mm07yfZLTbc5nW/s7SZb+1/El\nSeqzRfO9AEmSeuKPqhqMtK0e028ATAGHJh04yaKqutapPwe8DAyq6mqSB4El7fIW4HPgyq0sXpKk\nhcSMrCRJ/1KS30fqi4EPgI0ti/p6kmVJPktyomVyN7S+m5IcTHIUODIy9EPAr1V1FaCqLlTVL0k2\nAw8Dx9p9JFmfZCbJySRfJFnW2s8l+TjJmTb3E7f1z5Ak6Q4ykJUkaTJLO1uLD7S26nZogef7wL6q\nGlTVl8A0cLSqVgIvAtuS3N1uGQCvVdXakbm+Bh5J8kOST5K80MbfCfwMrKmqdUmWt/HXVdUUcBJ4\nt7O2i1X1NLAb2DFn/4QkSfPMrcWSJE3mypitxeOkHUPrgVeSvNfqS4BHmQ00j1TVxdEBqupyking\neWAtsD/J1qraM9J1FbACmEkCcBcw07m+t533AdsnWLskSb1gICtJ0u33alWd7TYkWQlcvtkNVXUD\nOA4cbx+SegsYDWRhNhh+c4I11D93kSSpH9xaLEnS3LoE3NupfwVsHlaSDLO63azt3yR5KsmTnaYB\ncK6VfwPua+UTwOrh+6/tfdzufRs7526mVpKkXjMjK0nSZMZlNGtM+RiwNckp4CPgQ2BHkjPMPkD+\nEdjQ+t8sS3oPsCvJ/cA14Czwdrv2KXA4yfn2nuwmYG+S4VeNp1t/gAeSnAb+BN64lR8rSdL/Warc\naSRJ0kKT5CdgqqouzPdaJEmaa24tliRpYfJJtSRpwTIjK0mSJEnqFTOykiRJkqReMZCVJEmSJPWK\ngawkSZIkqVcMZCVJkiRJvWIgK0mSJEnqFQNZSZIkSVKv/AXn/32zyifJBQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109a99410>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,9))\n",
    "plt.step(range(len(measurements[0])),dxt, label='$\\dot x$')\n",
    "plt.step(range(len(measurements[0])),dyt, label='$\\dot y$')\n",
    "\n",
    "plt.axhline(vx, color='#999999', label='$\\dot x_{real}$')\n",
    "plt.axhline(vy, color='#999999', label='$\\dot y_{real}$')\n",
    "\n",
    "plt.xlabel('Filter Step')\n",
    "plt.title('Estimate (Elements from State Vector $x$)')\n",
    "plt.legend(loc='best',prop={'size':22})\n",
    "plt.ylim([0, 30])\n",
    "plt.ylabel('Velocity')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Position x/y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAAWCAYAAACxMEX0AAAABHNCSVQICAgIfAhkiAAABUNJREFU\neJztnNtrHUUcxz9pjo22WtsaG7RealNbRLCkUhVJgwEfxAf9A6yCL6J4eRBFjVoOeH0RBMEH7UPR\nqBEVFclDpUioGMRSvFRBCkWirW1MvBslShoffnvM7jibszM7O2f3ZD4Qztnf/H77m/1mMrtz2UAg\nEAgsUTpS7BcAA8Cw43wrgI+By1LKtwBPARPAPNAN3A9MWvrlyVEWngbeBb4GZoGLgBuAl4GjMT8f\n2rmIrxqu9ddRNU2vAB4ETgPOAz4BdgHHFD8f2mWJ7wSeAYaAP5ud7MyogqdkTJ6V7cCBqIJpeY8C\nO2O2IeBLYLmFX54cZWJe+ZkDHlV8fGjnIr6KuNRfR9U03Qa8D6yOjk8H9gM/ABsU36K1M4nfDLyU\n4Xw8h1ykKy4BRoE9yNNfWgf4BCJiLWZbC/wD3GHhlydHmZgAXgDeQe5iWzU+PrRzEV9FXOqvo2qa\njgKbFFsf8nc9otiL1s40vg7cvNjJNgL7MiS1ZQ/pHeBh4D2N/RDwgYVfnhxlYiyDjw/tXMRXkbEM\nPkupTf4BfAusU+w/A9OKbSzD+Xy2yW7gC2RIDMAyxeFOZPjrmzOAixFhVb4HLjf0y5OjavjQzkV8\nu7LU2uQ3QA+wUrHPInOCJvhuk9PIPOVgw1BTHK4Hnm+StAgujD5/05TNAKuALgO/2Rw5dLGtZDnw\nEHL3Ogn0IhPQh6NyH9qZ5CmbfnlxpX+7tMmrkI7nRMx2LtIpjim+RWpnG/8RshCzD5Id4HrksfZI\nSrIiWRV9/q0pm4k+Vxv46VaP8sS2kh5kNf676Hgn8CEyn3ICP9rhIL6quNK/XdrkDAt1a3AX0sE9\nrNiL1A7L+M+QThlIDoE3IJOJrWAu+tTNDzZWozsN/PLkKBubWWhAAK8hd+Ch6NiHdiZ52g1X+uto\nB003Ancj21DGlbIitbON/xEZNgPJJ8Ae4FfNibYiixdpewZVPgVuzejbYGqRssZcw+8GfnlylI05\nzfEUcCNwD360w0F8K3DRdl3pr6OKmsbpAl4FXgQe0ZQXqR2W8T8hW2eAZAdYQx5jVT5HlrmLZBLp\nxddoylYCvyAXcjKjX54cZWI/8se7Q7F3IvMq4Ec7kzxlIm/bdam/jipqGmc3sidwl6asaO1s42vE\n5gTjQ+CplBP5YAa5+56vKduEjNtN/PLkKBN9yJBBpRvZYwV+tHMRX0Vc6q+jyprWkcWMeOd3S+x7\n0drZxq8hNtUX7wCPAWc1SVgko8CVJIcrvcjFvWnhBzLWjy/Nm8RuAU41ugL37AWuVWx9yNAj/pqi\nD+1M48ugX15c6w/Vb5MgixnLgMcUe3/suw/tTOMBziY5L/kfHcBxZEm7KEaQR9YVmrJzkEfW+E7t\nZ4GvSL7SktVvABn27bWIHYzq+VazCyqY7ci+zK7ouAN5nWc8ZgM/2pnEl0W/vLjWvx3a5AAyWhxW\nfkaQRY4GPrQziW/wJPKOMpCcA5xHxvM7gNc1gbasQ4RYD1wa2SaQd/V2A69EtuPANcirLduQx+e1\nwHUkl7mz+k0iv6gjlrHTtH4j6gHkVaJh4C9k2f8QcBvJvU0+tDONL4N+eXGtfzu0ybeR+t2kKXs8\n9t2HdibxDfqBB9Iu7mrgjbTCJUi91RWoOPVWV6ANqbe6AhWmFzgYN6ivwo0j+2d6fdWo5HQ1dwks\nQtDPPUFTe+5lYQ8i8P8OEOA+ZHIz696pdmUQ5W4RMCLo556gqT0DyH+IUecQtfQDtxdanXJTQ3a2\nB+wI+rknaGpPJ7JRu+xv1QQCgUAgEAgEAoFAIFAU/wKCKX80Xy6aFQAAAABJRU5ErkJggg==\n",
      "text/latex": [
       "$$\\left ( -100.0, \\quad 500.0, \\quad -50.0, \\quad 250.0\\right )$$"
      ],
      "text/plain": [
       "(-100.0, 500.0, -50.0, 250.0)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nlJ///OeD+vz9998/O+ywQ0499dTccMMNefrpp5MkBx54YC666KLMnTs3a9asycqVK5Mk06ZNy+WX\nX57Vq1fnuuuuy4UXXphrrrkmSXLLLbckSVavXp01a9bk8MMPzzXXXJNzzz033/nOd7JixYocddRR\nOeWUU7brd7W9BGAAAIAm++Uvf5m/+qu/ynPPPZcNGzbkoYceyvHHH7/ZNffee+9m99R2dXXlF7/4\nxaavH3/88RxyyCH5zGc+k/POOy/z58/P9ddf3/Aapk+fnltvvTWllJx22mnZddddc+KJJ2b58uVb\n3ZGeN29eDj744CTJIYcckne84x2bAvnWrr/ooouyaNGi7L///mlra8uiRYty1113ZdmyZQ2vcagE\nYAAAgCa744470tb2h3hWVVUefvjhPPPMM5ue23333Tf7nokTJ2bffffd9PVXv/rVrFq1Kl1dXUmS\ndevW5SMf+cig1nHAAQfkkksuybJly3LPPffksccey4c+9KGUUl507W233Zajjz46u+66a2bOnJmL\nL744Tz31VL/v/dBDD+WDH/xgdt555+y8886ZNWtWkuTRRx8d1BqHQgAGAABosr322utFu6YTJ07M\nlClTNn29sSK90047ZerUqfmzP/uznHTSSZtef/rpp7Nhw4bN3mPt2rXbvab9998/7373u3PPPfds\nNQAvXLgwb33rW/PII49k1apVOf300zftUG/t+n322Sf/9E//lKeffnrT/5555pm8/vWv3+41DpYA\nDAAA0GTHHHNMTjjhhEydOjXTp0/PlClTcumll24WJI888sjcd999ufzyy3PjjTfm29/+9ma7xn/x\nF3+R9vb2TV9PmTIlJ598csNr+M1vfpMLLrhg047ssmXLcsUVV2Tu3LnZbbfd8sgjj2zaXU56wvXO\nO++ciRMn5vbbb09HR8em9b7kJS9JW1tbfve73226/vTTT8/nP//5/PKXv0zSc3/wN7/5zUH+poam\njLWx1ENVSqla7WcCAABaRyllq/fIVlWVJUuW5LHHHsvrXve67L///oN+76uuuiof//jH8+yzz+aU\nU07Jl770pey4Y2On3z722GP58Ic/nH/913/NqlWrMnPmzLz5zW/OF7/4xUyaNCknnXRSfvazn2WH\nHXbI8uXL861vfSsf/ehHs3LlysybNy8vf/nLs2rVqnzjG99Ikpx99tm58MIL09XVlc7Ozhx22GG5\n/PLLc/755+ehhx7KjBkzcuyxx+ZrX/vaoH5Pvc+/eIu5AQIwAADAKOov2LG5kQjAKtAAAADUggAM\nAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAAY9zzzz+fyy+/\nPIfOPTSz9piVPV++Z84484zcd999zV7auCIAAwAANNny5cvz2c99Nge85oDsvd/emTt/bq688sqs\nX78+TzzxRA7540Py/s+9P3fue2dWvmNlHj/+8Xzt/34trznsNbno4os2vc/KlStz/fXX59prr839\n998/6HXceuutOeKIIzJz5szMmjUrRx55ZO64445ceumlOeqoo4b0Mz744INpa2tLd3f3kN5nKHZs\n2icDAACQ6667Lie/8+R079+d5177XNKePPpfj+aes+/JorMXZeKEiXngJQ9kw7wNSfnD93Xt3pWu\nOV35yCc/kpkzZubaH1yb73znO5n40okpO5asf3h9Dnn1IfnKl76Sww47bJvr+P3vf58TTjghF198\ncU4++eQ8//zzueWWWzJp0qQh/4wbNmzY9LiqqiG/3/YqzfzwkVBKqVrtZwIAAFpHKWVTCLzzzjtz\n5DFHZt3b1iUv3eLCKmm7pi3VsirVB6rNwu9m/j2Z8OMJyWuSriO6kqm9z29I8n+TKUum5AfX/CDz\n5s0bcF133HFHFixYkKeffnqz53/1q1/l0EMPTVdXV9rb2zNhwoSsXLky1113XT71qU/lP//zPzNj\nxoy8733vy9lnn52kZ7f3Fa94Rb72ta/lM5/5TF72spflwQcfzLJlyzJ1as8Cf/SjH+Xwww9v6Pe0\nlef7+20MSAUaAACgST792U/n2dc/++LwmyQl6X6hO9XhA4TfJHkg6fqjrnQt6BN+k56+72uTdW9Z\nl5NOPildXV0DrmX//ffPDjvskFNPPTU33HDDpiB84IEH5qKLLsrcuXOzZs2arFy5Mkkybdq0XH75\n5Vm9enWuu+66XHjhhbnmmms2e8+bb745v/71r3PjjTfm5ptvTpKsXr06a9asGTD8jhQBGAAAoAlW\nr16dH974w1SvGaDBuibJ7AHe5Jkkv00y0ObufsmGGRvy3e9+d8D1TJ8+PbfeemtKKTnttNOy6667\n5sQTT8zy5cu3uhM7b968HHzwwUmSQw45JO94xzuydOnSza5ZvHhx2tvbM2nSpKZWnzcSgAEAAJrg\nySefzITpE5LJA1w0KcnaAV5/OD27x1MG/qw1r1yT713/vW2u6YADDsgll1ySZcuW5Z577sljjz2W\nD33oQynlxVvQt912W44++ujsuuuumTlzZi6++OI89dRTm13z0pdubWu7eQRgAACAJpg+fXq6nulK\nBhqKfFCSOwd4/YUkOzTwYROS555/blDr23///fPud78799xzz1YD8MKFC/PWt741jzzySFatWpXT\nTz/9RROe+37f1t5jtAnAAAAATbDHHnvkla98ZU+FuT8HJXk8yb39vL5TkmUZOEQnmfzE5Bz66kMH\nvOY3v/lNLrjggjz66KNJkmXLluWKK67I3Llzs9tuu+WRRx7Z7D7itWvXZuedd87EiRNz++23p6Oj\nY8CQ+5KXvCRtbW353e9+N/BiR5AADAAA0CSf+ttPZerNU5P+NmcfTybvODnTfzy9Z9LzxgHNLyS5\nN5l649TMmDYj+fUAH7I2yS+T977nvQOuZfr06bntttty+OGHZ9q0aZk7d25e/epX58tf/nKOOeaY\nHHzwwdl9992z6667Jkm++tWv5tOf/nR22mmnfPazn83b3/72zd5vyzA8ZcqUnHXWWXnDG96QnXfe\nObfffvuA6xkJjkECAAAYRX2P96mqKmf8zRm57LuX5Zk3PJO8Kj2V5nVJuauk/bb2fPuqb+fAAw/M\nF770hVz69UvzQvVCXlj/Qg55zSFZ9NFFmT17dt7039+UZ9+2lWnSzyRTvjklZy48M+edc95o/6hD\nMhLHIAnAAAAAo2jLYFdVVa6++up87vzP5bf3/TYTpkxI19quvPGEN+bsT56dOXPmbLp2w4YNWbVq\nVSZPnpxp06Ztev773/9+TnnXKcneydpXrE12TCY9Ninl3pIPvP8DOf+888fEPbiDIQA3QAAGAADG\nsv6CXZIsX748a9euza677rpZwG3EunXrcuWVV+Z7nd9LV1dXXvea1+Wv/+qvs+eeew7HskedANwA\nARgAABjLBgrA/MFIBGBDsAAAAKgFARgAAIBaEIABAACoBQEYAACAWhCAAQAAqAUBGAAAYIx7/vnn\nc/nll2f+oYdmn1mzsv+ee+bDZ5yR++67r9lLa9jLXvay/PjHP27qGgRgAACAJlu+fHk+/9nP5vAD\nDshBe++d4+bOzZVXXpn169fniSeeyOsPOSSXvP/9+eCdd+aWlSvzzccfT/vXvpY3vOY1+T8XXbTp\nfVauXJnrr78+1157be6///7tWsuVV16Zww8/PNOmTctuu+2W17/+9bnwwguH/DOWUlLKdp1eNGx2\nbOqnAwAA1Nx1112Xd598ct7a3Z3zn3sus5Lc++ijufCee/K5RYsyYeLEnPDAA/m7DRvSNz6+uqsr\n7+vqyryPfCTTZ87MD6+9Nt/+znfyxxMnZnIp+fn69TnkkEPy+a98JYcddlhDa/nyl7+cL37xi/nq\nV7+a4447LlOnTs1dd92VL33pS3nf+96XiRMnjsjvYLSUVjuAuZRStdrPBAAAtI5SSjZmljvvvDPH\nHXlkrl23Lq/f4roqyXva2vLTqspvqir97Z3+c5KPTZiQU5Ms6urKS3qffz5JR5K/nTIl/98PfpB5\n8+YNuK7Vq1dnr732ymWXXZaTTjqp32vOPPPM3HDDDZkyZUpOO+20fPKTn0wpJb/73e9y2mmn5T/+\n4z9SSslxxx2Xf/zHf8yMGTOSJC9/+cvzz//8zznmmGO2+TtKNv89beX57dpKVoEGAABoki98+tM5\n69lnXxR+k6Qk6eruzgcHCL9JclOSv+zqygV9wm+STEryniQd69Zl4Uknpaura8C1/OxnP8vzzz+f\nE088sd9rzjzzzKxZsyYPPPBAli5dmm984xu55JJLNr1+1lln5fHHH8+vfvWrLFu2LIsXLx7wM0eb\nAAwAANAEq1evzvU//GFOHaDB+liSAwZ4j/9Kcl2SxQNcsyDJKzdsyHe/+90B17NixYrMnj07bW1/\niIlHHHFEdt5550yZMiU333xzrrrqqpx77rmZOnVq9t1333z0ox/NZZddliTZb7/98qd/+qeZMGFC\nZs+enQ9/+MNZunTpgJ852gRgAACAJnjyySfzkgkTMmOAa2YkeXKA129N8oYku2zjs/7HmjX50fe+\nN+A1s2bNyooVK9Ld3b3puZ/+9Kd5+umnM2vWrDzxxBPp6urKvvvuu+n1ffbZJ48++uimn+cd73hH\n9t5778yYMSPvete78tRTT21jZaNLAAYAAGiC6dOn5+murrwwwDV/kZ57fPuzPsmEBj6rPcn6554b\n8Jq5c+dm0qRJ/e4Uz549OxMmTMiDDz646bmHH344e++9d5Lkk5/8ZHbYYYfcc889Wb16dS677LLN\nwvRYIAADAAA0wR577JFXvfKV+cEA1/xFkn9PcnU/r780yU+TAUN0kvxs8uQceOihA14zc+bMnH32\n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\nggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAA\nQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAA\nAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIA\nDAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAt\nCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA\n1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwA\nAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjA\nAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSC\nAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABA\nLQjAAAAA1IIADAAAQC0IwAAAANSCAAwAAEAtCMAAAADUggAMAABALQjAAAAA1IIADAAAQC0IwAAA\nANTCjs1eAAAA0FqqqspPfvKT3H777UmSww47LMccc0xKKU1eGXVXqqpq9hqGVSmlarWfCQAAxoub\nbropp7/rXZm8enWOe/bZJMkN7e1ZP2NGLrzsshx99NFNXiHjXSklVVVt17+mCMAAAMCwuOmmm/L2\nE07I19ety/FJNiaUKskNSd49ZUqu+v73hWCGRADuQwAGAIDRV1VVDnjpS/MPjz6aP+/nmh8k+cje\ne+dXDz+sDs12G0oANgQLAAAYsp/85CeZvHp1jh/gmj9PMnHVqtx0002jtSzYTNMCcCnlpaWUm0op\n95ZS7iml/E3v87uUUn5YSrmvlHJjKWVmn+9ZVEr5bSnl16WUY5u1dgAAYHO33357Fqxbl4G25UqS\n4599dtNwLBhtzdwB7kry4aqqDk7y+iT/s5RyYJJPJPlhVVWvSvLj3q9TSjkoyduTHJTk+CRfLaXY\n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\ns7zogSS/my+JYKu+AACw9ybdA3wkyUPd/XCSVNVvJ3l9kvvO9UPwfBw/fjyPP/X4YuX3bA4n+fIk\n/7x4evDgwRw7dkz4AgDAPnZg1QN4nl6W5NENzx9bHoNdc+rUqcU9v+f6O6VK8m3J5ZdfnmuvvdYl\nzwAAsAbWbQXYtc3sGwcuOpCbb745t9xyy6qHAgAAbMG6BfDpJIc2PD+UxSrwl7j99tv//fHRo0dz\n9OjRvR4XF5AjR47k4B0H8/n+/NlXgTu55JFLcuTIkfM6NgAAmObkyZM5efLkrrzXum2CdXEWm2D9\nQJJ/SHIqNsFil3V3Dn3zoZz+vnNvgnXFn16RR/72kVRt6/57AABgG3ayCdZa3QPc3U8m+dkkH01y\nb5Lf2Ri/sBuqKu+58z255A8uWez2vPHvUzrJA8klH7wkd915l/gFAIA1slYrwFthBZjdcuLEidzw\n5hvy+FOPLzbFSnLw7w/mxRe/OHfdeVeuueaaFY8QAADmGfM9wFshgNlN3Z3jx4/nE5/4RJLF/cHX\nXHONlV8AAFgRAbyBAAYAALhwjbkHGAAAALZLAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAj\nCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDA\nAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEA\nABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAw\nggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQB\nDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgA\nAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAA\nIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQ\nwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIAB\nAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAA\nMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAE\nAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIY\nAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAA\nACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABG\nEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCA\nAQAAGEEAAwAAMMJKAriqfrSq/rqqnqqq737GuVur6sGqur+qXrPh+Cur6p7lubef/1EDAACwzla1\nAnxPkuuT/PHGg1V1ZZI3JrkyyXVJ3llVtTx9R5Ibu/twksNVdd15HC8AAABrbiUB3N33d/cDm5x6\nfZL3dvcT3f1wkoeSXF1Vlyd5UXefWr7uriRvOD+jBQAA4EKw3+4BfmmSxzY8fyzJyzY5fnp5HAAA\nALbk4r1646q6O8llm5y6rbs/sFe/LgAAAGxmzwK4u6/dxo+dTnJow/Mrslj5Pb18vPH46bO9ye23\n3/7vj48ePZqjR49uYygAAACs2smTJ3Py5Mldea/q7l15o2394lUnkvzH7v7z5fMrkxxLciSLS5z/\nMMm3dHdX1ceT3JzkVJIPJnlHd39kk/fsVf47AQAAsHeqKt1dz/3KZ1vV1yBdX1WPJvmeJB+sqg8n\nSXffm+R9Se5N8uEkN22o2ZuSvCvJg0ke2ix+AQAA4GxWugK8F6wAAwAAXLjWbgUYAAAAzjcBDAAA\nwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIAR\nBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhg\nAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAA\nAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAY\nQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIA\nBgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwA\nAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACA\nEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMI\nYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAA\nAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAA\nGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAAgBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCC\nAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAjCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEM\nAADACAIYAACAEQQwAAAAIwhgAAAARhDAAAAAjCCAAQAAGEEAAwAAMIIABgAAYAQBDAAAwAgCGAAA\ngBEEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAYAAGAEAQwAAMAIAhgAAIARBDAAAAAj\nCGAAAABGEMAAAACMIIABAAAYQQADAAAwggAGAABgBAEMAADACAIYAACAEQQwAAAAI6wkgKvql6vq\nvqr6i6r6n1X1VRvO3VpVD1bV/VX1mg3HX1lV9yzPvX0V4wYAAGB9rWoF+GNJvr27X5HkgSS3JklV\nXZnkjUmuTHJdkndWVS1/5o4kN3b34SSHq+q68z9sJjp58uSqh8AFxHxit5lT7DZzit1mTrGfrCSA\nu/vu7n56+fTjSa5YPn59kvd29xPd/XCSh5JcXVWXJ3lRd59avu6uJG84n2NmLh/a7Cbzid1mTrHb\nzCl2mznFfrIf7gF+c5IPLR+/NMljG849luRlmxw/vTwOAAAAW3LxXr1xVd2d5LJNTt3W3R9YvuYX\nkvxbdx/bq3EAAABAklR3r+YXrvqpJG9J8gPd/a/LY7ckSXe/bfn8I0l+KcnfJznR3S9fHn9Tku/v\n7jrejfsAAAYSSURBVJ/e5H1X8y8EAADAedHd9dyverY9WwE+l+UGVv8pi4j91w2n3p/kWFX9tywu\ncT6c5FR3d1X9S1VdneRUkhuSvGOz997ufwgAAAAubCtZAa6qB5O8MMn/Xh760+6+aXnutizuC34y\nyVu7+6PL469M8ptJDib5UHfffL7HDQAAwPpa2SXQAAAAcD7th12gt6WqfrSq/rqqnqqq737GuVur\n6sGqur+qXrPh+Cur6p7lubef/1GzTqrquuUcerCqfn7V42E9VNWvV9Vnq+qeDce+pqrurqoHqupj\nVfXiDec2/byCJKmqQ1V1Yvn73V9V1c3L4+YU21JVX1ZVH6+qTy/n1O3L4+YUO1JVF1XVp6rqzGa3\n5hTbVlUPV9VfLufUqeWxXZlTaxvASe5Jcn2SP954sKquTPLGJFcmuS7JO6vqzH3BdyS5sbsPJzm8\nvBcZnqWqLkryq1nMoSuTvKmqXr7aUbEmfiOLebPRLUnu7u5vTfJHy+dn+7xa589ldt8TSX6uu789\nyfck+ZnlZ5E5xbYs9165pruvSnJVkuuWe6yYU+zUW5Pcm+TM5aXmFDvRSY5293d195HlsV2ZU2s7\n2br7/u5+YJNTr0/y3u5+orsfTvJQkqur6vIkL+ruU8vX3ZXkDedntKyhI0ke6u6Hu/uJJL+dxdyC\nc+ruP0nyf55x+EeSvHv5+N354mfPZp9XRwJL3f2Z7v708vHnk9yXxSaR5hTb1t1fWD58YZIXZPEH\nTXOKbauqK5L8cJJ3JTmz8GROsVPP3Nx4V+bU2gbwObw0yWMbnj+WxR8Wnnn89PI4bOZlSR7d8PzM\nPILteEl3f3b5+LNJXrJ8fLbPK3iWqvqGJN+V5OMxp9iBqjpQVZ/OYu58bLk4YE6xE/89i294eXrD\nMXOKnegkf1hVn6yqtyyP7cqcWsnXIG1VVd2d5LJNTt3W3R843+NhFLvDsSeWX+t2rvll7vEsVfUV\nSf5HFt+O8H+/eGePOcXz191PJ7mqqr4qye9V1Xc847w5xZZV1euS/FN3f6qqjm72GnOKbXhVd/9j\nVX1tkrur6v6NJ3cyp/Z1AHf3tdv4sdNJDm14fkUWfwtwevl44/HT2x8dF7hnzqND+dK/WYLn47NV\ndVl3f2Z5O8Y/LY9v9nnlc4kvUVUvyCJ+39Pdv788bE6xY939eFWdSPJDMafYvu9L8iNV9cNJvizJ\nV1bVe2JOsQPd/Y/Lf/6vqvq9LC5p3pU5daFcAr3x+vD3J/nxqnphVX1jksNJTnX3Z5L8S1VdvdwU\n64Ykv7/Je0GSfDKLjdK+oapemMWN9e9f8ZhYX+9P8pPLxz+ZL372bPp5tYLxsU8tf7+6M8m93f0r\nG06ZU2xLVV16ZufUqjqY5Nos7i03p9iW7r6tuw919zcm+fEkx7v7hphTbFNVXVJVL1o+/vIkr8li\nA+RdmVP7egX4XKrq+iTvSHJpkg9W1ae6+7XdfW9VvS+LXeieTHJTf/HLjm9K8ptJDib5UHd/ZAVD\nZw1095NV9bNJPprkoiR3dvd9Kx4Wa6Cq3pvk+5NcWlWPJvnFJG9L8r6qujHJw0l+LEme4/MKkuRV\nSX4iyV9W1aeWx26NOcX2XZ7k3ctvOziQ5He6+0NV9Wcxp9gdZ+aHzym26yVZ3J6RLHr1t7r7Y1X1\nyezCnCrzDQAAgAkulEugAQAA4JwEMAAAACMIYAAAAEYQwAAAAIwggAEAABhBAAMAADCCAAaANVNV\nh6rq76rqq5fPv3r5/OtWPTYA2M8EMACsme5+NMkdSd62PPS2JL/W3Y+sblQAsP9Vd696DADA81RV\nFyf58yS/keTGJFd191OrHRUA7G8Xr3oAAMDz191PVtV/TvLhJNeKXwB4bi6BBoD19dok/5DkO1c9\nEABYBwIYANZQVV2V5AeTfG+Sn6uqy1Y8JADY9wQwAKyZqqosNsF663JDrF9O8l9XOyoA2P8EMACs\nn7ckebi7/2j5/J1JXl5V/2GFYwKAfc8u0AAAAIxgBRgAAIARBDAAAAAjCGAAAABGEMAAAACMIIAB\nAAAYQQADAAAwggAGAABgBAEMAADACP8fKpuqHKz8WF8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x109eaee90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(16,16))\n",
    "plt.scatter(xt,yt, s=20, label='State', c='k')\n",
    "plt.scatter(xt[0],yt[0], s=100, label='Start', c='g')\n",
    "plt.scatter(xt[-1],yt[-1], s=100, label='Goal', c='r')\n",
    "\n",
    "plt.xlabel('X')\n",
    "plt.ylabel('Y')\n",
    "plt.title('Position')\n",
    "plt.legend(loc='best')\n",
    "plt.axis('equal')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Conclusion"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It works pretty well."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
